JAVA/자바의 정석(feat.남궁성님)

[자바의정석] 연습문제 풀이 4단원

멋쟁휘개발자 2021. 12. 16. 19:57

[4-1]

[4-2]

public class Ex4_2 {
	
	public static void main(String[] args) {
		
		int sum = 0;
		int x = 0; // i를 변경하면, 변경한 값 그대로 다시 for문을 돈다.
		int cnt =0;
		
		for(int i=1; sum<100; i++) { //sum<=100으로 하면 sum이 100인 상황에서 for문이 한번 더 돌아감
			
			if(i%2==0) {
				x= -i;
			}else {
				x=i;
			}
			 
			sum += x;
 			cnt++;
			}
		System.out.println(sum);
		System.out.println(cnt);
			
		}
		
	}

[4-3]

한참봤다. totalSum의 개념을 찾긴 했지만, 정확히 풀지 못했다.

package javaJungsukEx;

public class Ex4_3 {
	
	public static void main(String[] args) {
		
		int sum = 0;
		
		for(int i=1; i<=20; i++) {
			if(i%2!=0 && i%3!=0) {
				System.out.println(i);
				sum += i;
				
			}
		}
		System.out.println(sum);
	}

}

[4-4]

++로 적용된 값이나 할당된 값이 그대로 올라가서 for문을 다시 돈다!

기억하자!!

package javaJungsukEx;

public class Ex4_2 {
	
	public static void main(String[] args) {
		
		int sum = 0;
		int x = 0;
		int cnt =0;
		
		for(int i=1; sum<100; i++) { //sum<=100으로 하면 sum이 100인 상황에서 for문이 한번 더 돌아감
			
			if(i%2==0) {
				x= -i;
			}else {
				x=i;
			}
			 
			sum += x;
 			cnt++;
			}
		System.out.println(sum);
		System.out.println(cnt);
			
		}
		
	}

[4-5]

 

한참을 헤맸다. 어디에서 ++을 시켜야할지..알고보면 쉬운 거였는데,

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

[4-6]

package javaJungsukEx;

public class Ex4_3 {
	
	public static void main(String[] args) {

// 두 눈의 합이 6이되는 경우의 수를 출력하는 프로그램
		for(int i=1; i<7; i++) {
			for(int j=1; j<7; j++) {
				if(i+j==6) {
					System.out.println(i +","+ j);
				}
			}
		}
		
//무작위로 던진 주사위의 눈이 6이되면 멈추는프로그램 		
		int x, y;
		boolean run = true;
		
		
		
	while(run) {
		x= (int)(Math.random()*5)+1;
		y= (int)(Math.random()*5)+1;
		
		System.out.println(x +","+ y);
		
		if(x+y==6) {
			run = false;
		  }
		
		}	
	}
}

[4-7]

 

package javaJungsukEx;

public class Ex4_7 {
	
	public static void main(String[] args) {
		
		String str = "12345";
		int sum =0;
		
		
		for(int i =0; i<str.length(); i++) {
			
			char c = str.charAt(i);
			System.out.println(c);
			int x = c+0;
			sum += x;
		
		}
		
		System.out.println("sum = "+sum);
		
	}

}

//각 자리를 char로 나누고 더해야한다. 
//문자열->문자->연산 시 유니코드 숫자가 아닌 문자 그대로의 숫자로 연산해야 하는 것이 포인트 -> 문자 '0'을 빼준다.
// 유니코드 48인 '0'이 기준점이되어 유니코드 29인 '1'에 '0'을 뺴면 49-48 = 1이라는 결과가 나옴

[4-8]

public class Ex4_8 {
	
	public static void main(String[] args) {
		
		int value =(int)(Math.random()*6)+1;
		
		System.out.println("value : "+value);
		}
		
	}

[4-9]

이번 문제는 완벽히 틀렸다.

처음 숫자를 어떻게 분리할까 고민하다가 10000 - 1000 - 100 -10 이렇게 나누면 각 자리수가 나올 것으로 착각을 했다

 

그리고 a += 1; 이건  a = a+1;과 같다 기억하자

public class Ex4_9 {
	
	public static void main(String[] args) {
		
		int num = 12345;
		int sum = 0;
		
		while(num>0) {
			sum += num%10;
			num /= 10;
			
		}
		System.out.println("sum : " +sum);
	}
}

[4-10]

import java.util.Scanner;

public class Ex4_10 {
	
	public static void main(String[] args) {
		
		int answer = (int)(Math.random()*10)+1;
		int input =0;
		int count =0;
		
		Scanner s = new Scanner(System.in);
		
		do {
			count++;
			System.out.println("1과 100 사이의 값을 입력하세요");
			input = s.nextInt();
			
			if(answer>input) {
				System.out.println("더 큰 수를 입력하세요.");
			}else if(answer<input) {
				System.out.println("작은 수를 입력하세요.");
			}else {
				System.out.println("정답입니다! 시도한 횟수는 "+count+"번 입니다.");
				break;
			}
			
		}while(true);
		
	}
}