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();
}
}
결과