dev.lang/Java

190617. 4장 조건문과 반복문. 예제. //주석

seuhyang 2019. 6. 17. 21:37

FlowEx01.java

public class FlowEx01 {
	public static void main(String[] args) {
		int x = 0;
		System.out.printf("x = %d 일 때, 참인 것은%n", x);
		
		if(x == 0) System.out.println("x == 0");
		if(x != 0) System.out.println("x! == 0");
		if(!(x == 0)) System.out.println("!(x == 0)");
		if(!(x != 0)) System.out.println("!(x != 0)");
		
		x = 1;
		System.out.printf("x = %d 일 때, 참인 것은%n", x);
		if(x == 0) System.out.println("x == 0");
		if(x != 0) System.out.println("x! == 0");
		if(!(x == 0)) System.out.println("!(x == 0)");
		if(!(x != 0)) System.out.println("!(x != 0)");
		
	}
}

결과


FlowEx02.java

import java.util.Scanner;

public class FlowEx02 {
	public static void main(String[] args) {
		
		int input;
		
		System.out.println("숫자를 하나 입력하세요.>");
		
		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine();
		input = Integer.parseInt(tmp);
		
		if(input == 0) {
			System.out.println("입력하신 숫자는 0 입니다");
		}
		
//		 if(input != 0) {	// 예제 4-2
		else {				// 예제 4-3
			System.out.println("입력하신 숫자는 0 이 아닙니다");
			System.out.printf("입력하신 숫자는 %d 입니다.", input);
		}
		scanner.close();
		
	}
}

결과

 


Flow01.java

public class Flow01 { //else if 설명
	public static void main(String[] args) {
		int i = 5;
		
		if(i > 0) {
		 System.out.println("양수");	
		}
		
		else if(i == 0) {
			System.out.println("0");
			}
		
		else {
			System.out.println("음수");
		}
	
	}
}

 

결과


FlowEx04.java

import java.util.Scanner;

public class FlowEx04 {
	public static void main(String[] args) {
		int score = 0;
		char grade = ' ';
		
		System.out.print("점수를 입력하세요. > ");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();
		
		if ( score >= 90) { // 여기서 만족이 되면 아래의 else 를 구동하지 않는다.
			grade = 'A';
		}
		else if (score >= 80) {// else 로 묶여있고, 위의 조건인 90보다 작다는 것이기 때문에
			grade = 'B';		// 90 > score >= 80 으로 계산 된다.
		}
		else if (score >= 70) {
			grade = 'C';
		}
		else {
			grade = 'D';
		}
		System.out.println("당신의 학점은 " + grade + "입니다.");
		
		scanner.close();
	}
}

결과

 


FlowEx05.java

public class FlowEx05 {
	public static void main(String[] args) {
		int score = 0;
		char grade = ' ', opt = '0';

		System.out.print("점수를 입력해주세요. > ");

		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();

		System.out.printf("당신의 점수는 %d 입니다.\n", score);

		if (score >= 90) {
			grade = 'A';
			if (score >= 98) {
				opt = '+';
			} else if (score < 94) {
				opt = '-';
			}
		} else if (score >= 80) {
			grade = 'B';
			if (score >= 88) {
				opt = '+';
			} else if (score < 84) {
				opt = '-';
			}
		} else {
			grade = 'C';
		}

		System.out.printf("당신의 학점은 %c%c 입니다. %n", grade, opt);
		
		scanner.close();

	}

}

 

결과.1 - 93입력

결과.2 - 99입력

결과.3 - 86 입력

FlowEx05_1.java

import java.util.Scanner;

public class FlowEx05_1 { //예제 4-5번 변환
	public static void main(String[] args) {
		int score = 0;
		char grade = ' ', opt = '0';

		System.out.print("점수를 입력해주세요. > ");

		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();

		System.out.printf("당신의 점수는 %d 입니다.\n", score);

		if (score >= 90) {
			grade = 'A';
		} else if (score >= 80) {
			grade = 'B';
		} else if (score >= 70) {
			grade = 'C';
		} else {
			grade = 'D';
			opt = ' ';
		}

		if (score % 10 >= 8) {
			opt = '+';
		} else if (score % 10 < 4) {
			opt = '-';
		}

		System.out.printf("당신의 학점은 %c%c 입니다. %n", grade, opt);

		scanner.close();

	}

}

결과.1 - 77 입력

결과.2 - 98 입력

결과.3 - 83 입력

 


FlowEx06.java

import java.util.Scanner;

public class FlowEx06 {
	public static void main(String[] args) {
		System.out.printf("현재 월을 입력하세요. > ");
		
		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();
		
		switch(month) { // switch 에서 처리할 수 있는 모든 것을 if 에서 처리할수 있지만
						// if에서 할 수 있는 것을 switch에서는 전부 안된다.
						// if 에서가장 강력한 것은 범위 조건문
						// switch는 동일 조건문 비교 밖에 못함
		case 3:
		case 4:
		case 5:
			System.out.println("현재의 계절은 봄 입니다.");
			break;
			
		case 6: case 7: case 8:
			System.out.println("현재의 계절은 여름 입니다.");
			break; // break 가 생략되면 복수의 문장을 출력함
			
		case 9: case 10: case 11:
			System.out.println("현재의 계절은 가을 입니다.");
			break;
			
			default: // case에 해당되지 않은 모든 값을 대응
//		case 12: case 1: case 2:
			System.out.println("현재의 계절은 겨울 입니다.");
		}
		scanner.close();
		
	}

}

 

결과.1

결과.2

 

문제점.

입력된 값 case 3: ~ 11: 까지의 값 (1, 2, 12 주석처리) 이외엔 default: 값으로 들어가기 때문에

지정된 값 이외의 값을 입력하면 겨울로 나온다.  

 


FlowEx07.java

import java.util.Scanner;

public class FlowEx07 {
	public static void main(String[] args) {
		Math.random(); // 난수를 반환 double type
		// 0 ~ 0.999999999999999 , 소수점 15번째 자리 까지.
		// 실행 할 때 마다 다른 숫자. 끝자리가 0일 경우 14자리.
		
//		System.out.println(Math.random()); 난수 출력해서 보여줌
		
		// Math.random() * 6;
		// 0 ~ 5.999999999999994 출력
		
		// (int)(Math.random() * 6)
		// 0 ~ 5 출력
		
		// (int)(Math.random() * 6) + 1
		// 1 ~ 6
		
		System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요 > ");
		
		Scanner scanner = new Scanner(System.in);
		int user = scanner.nextInt();
		int com = (int)(Math.random() * 3) + 1; // 1에서 3 출력
		
		System.out.println("당신은 " + user + " 입니다.");
		System.out.println("컴은   " + com  + " 입니다.");
		
		switch(user-com) {
		case 2: case -1:
			System.out.println("당신이 졌습니다.");
			break;
			
		case 1: case -2:
			System.out.println("당신이 이겼습니다.");
			break;
			
		case 0:
			System.out.println("비겼습니다.");
//			break; //마지막 문장은 break 생략 가능
			
		scanner.close();
		}
		
	}
}

결과

난수(Math.Random)를 이용한 랜덤 값 활용

 

 


FlowEx10.java

import java.util.Scanner;

public class FlowEx10 {
	public static void main(String[] args) {
		int score = 0;
		char grade = ' ';
		
		System.out.print("점수를 입력하세요. > ");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();
		
		switch (score/10) {
		case 10: case 9:
			grade = 'A';
			break;
		case 8:
			grade = 'B';
			break;
		case 7:
			grade = 'C';
			break;

		default:
			grade = 'F';
			break;
		}
		
		System.out.println("당신의 학점은 '"+ grade + "' 입니다.");
		
		scanner.close();
	}
}

결과