자바의정석

자바의 정석 ch04 연습문제

유호야 2022. 2. 23. 17:03
반응형

1번

package ch04;

public class Solve {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		//1번
		int x = 10;
		
		if(x > 10 && x < 20) {
			
		}
		
		//2번
		char ch = 'A';
		if(ch != ' ' && ch != '	') {
			
		}
		
		//3번
		if(ch == 'x' || ch == 'X') {
			
		}
		
		//4번
		if('0' >= ch && ch <= '9') {
			
		}

		//5번
		if((ch > 'a' && ch < 'z') || (ch >= 'A' && ch <= 'Z')) {
			
		}
		
		//6번
		int year = (int)Math.random();
		if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
			
		}
		
		boolean powerOn = false;
		if(!powerOn) {
			
		}
		
		String str = "yes";
		if(str.equals("yes")){
			
		}
		
		
		
	}

}

'\t' 탭


 

package ch04;

public class Solve {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		int sum = 0;
		
		for(int i = 1; i <= 20; i++) {
			if(!(i%2 == 0 || i%3 == 0)) {
				sum += i;
				System.out.println("i: " + i);
			}
		}
		
		System.out.println("결과: " + sum);
	}

}

 


 

220

package ch04;

public class Solve {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		int sum = 0;
		
		for(int i = 1; i <= 10; i++) {
			for(int j = 1; j <= i; j++) {
				sum += j;
			}
		}
		
		System.out.println(sum);
		
	}

}

 


\

answer : 199

package ch04;

public class Solve {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//짝수에만 - 
		int sum = 0;
		
		
		for(int i = 1; i <= 10000; i++) {
			if(i % 2 == 0) {
				sum -= i;
			} else {
				sum += i;
			}
			
			if(sum >= 100) {
				System.out.println("answer : " + i);
				break;
			}
		}
		
	}

}

 

여기서 i를 i= -i 와 같은 일을 해버리면 for문안에 있는 i++에 영향을 주기 때문에 
sum을 할 때 더하고 뺴기와 같이 입력해야 한다.


 

 

		int i = 0;
		
		while(++i <= 10) {
			int j = 0;
			while(++j <= i) {
				System.out.print("*");
			}
			System.out.println("");
		}

 

for(int i = 1; i <= 6; i++) {
	for(int j = 1; j <= 6; j++) {
		if(i + j == 6) {
			System.out.println("("+i +", " + j + ")");
		}
	}
}

 


package ch04;

public class Solve {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int value = (int)(Math.random()*6) + 1;	
		System.out.println(value);
		
	}
}

 


package ch04;

public class Solve {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//2x+4y = 10;
		for(int x = 0; x <= 10; x++) {
			for(int y = 0; y <= 10; y++) {
				if(2*x + 4*y == 10) {
					System.out.println("("+x+", "+y+")");
				}
			}
		}
	}
}

charAt 사용하란거 못 보고 풀어버림

package ch04;

public class Solve {

	public static void main(String[] args) {
		String str = "12345";
		int sum = 0;
		int num = Integer.parseInt(str);
		for(int i=0; i < str.length(); i++) {
			sum += num%10;
			num /= 10;
		}
		System.out.println("sum="+sum);
	}
}

 

char 타입으로 char 변수 값이 숫자일 경우에 마이너스 - '0' 를 해줌으로써 char 변수를 유지하면서 그 값을 얻어낼 수 있다.


 

4-10은 Str으로 바꾸지 않고 하는 방법 (위와 같은 방법일 듯)


 

\

 

package ch04;

import java.util.Arrays;

public class Solve {

	public static void main(String[] args) {
		
		int num1 = 1;
		int num2 = 1;
		int num3 = 0;
		
		System.out.print(num1 +", " + num2);
		
		int arr[] = new int[10];
		arr[0] = num1;
		arr[1] = num2;
		
		for(int i = 0; i < 8; i++) {
			
			arr[i+2] = arr[i] + arr[i+1];
			
			System.out.print(", " + arr[i+2]);
		}
		
	}	
}

 

다시 풀어보기


package ch04;

public class Solve {

	public static void main(String[] args) {
		
		//구구단의 일부분
		for(int i = 2; i <= 9; i++) {
			for(int j = 1; j <= 3; j++) {
				System.out.println(i +"*" + j + " = " + i*j);
			}
		}
		System.out.println();
	}	
}

 

package ch04;

public class Solve {

	public static void main(String[] args) {
		
		String value = "12334";
		char ch = ' ';
		boolean isNumber = true;
		// charAt(int i) 반복문과 를 이용해서 문자열의 문자를
		// . 하나씩 읽어서 검사한다
		for(int i=0; i < value.length() ; i++) {
			if(!(value.charAt(i) >= '0' && value.charAt(i) <= '9')) {
				isNumber = false;
				break;
			} else {
				isNumber = true;
			}
		}
		if (isNumber) {
			System.out.println(value+"는 숫자입니다.");
		} else {
			System.out.println(value+"는 숫자가 아닙니다."); 
		}

	}
}

false인 순간 for문을 빠져나와야 한다

 


package ch04;

public class Solve {

	public static void main(String[] args) {
		
		int answer = (int)(Math.random()*100)+1;
		int input = 0;
		int count = 0;
		
		java.util.Scanner s = new java.util.Scanner(System.in);
		
		do {
			count++;
			System.out.print("1과 100 사이의 값을 입력하세요 : ");
			input = s.nextInt();
			
			if(input == answer) {
				System.out.println("정답입니다.");
				break;
			} else if(input > answer) {
				System.out.println("더 작은 수를 입력해주세요.");
			} else if(input < answer) {
				System.out.println("더 큰 수를 입력해주세요.");
			}
			
		} while(true); //무한 반복문
	}
}

 

제곱 double 타입으로 return 되는

Math.pow(n, m)을 이용했다.

package ch04;

public class Solve {

	public static void main(String[] args) {
		
		int number = 12321;
		int tmp = number;
		
		int result = 0; //변수 number를 거꾸로 변환해서 담을 변수
		
		while(tmp != 0) {
			int length = (tmp+"").length();
			result += ((tmp%10) * (int)Math.pow(10, --length));
			tmp = tmp/10;
		}
		
		if(number == result)
			System.out.println( number + "는 회수문 입니다.");
		else 
			System.out.println( number + "는 회수문이 아닙니다.");
	}
}
반응형