조건문
if
if(조건식) {수행문}
if(조건식) {수행문1} else{수행문2}
if(조건식) {수행문1} else if{수행문2} else if{수행문3} ... else {수행문4}
if(조건식) {수행문1 if(조건식2) {수행문} } else {조건식 2의 거짓일때 수행문} else {조건식1의 거짓일 때 수행문}
System.out.println("나이 입력");
int age = sc.nextInt();
int charge = 0;
if(age<8) {
charge = 1000;
System.out.println("취학 전 아동");
}
if (age<14) {
charge = 2000;
System.out.println("초등학생");
}
if(age<20) {
charge = 2500;
System.out.println("중, 고등학생");
}
else {
charge = 3000;
System.out.println("일반인");
}
System.out.println("입장료는 " + charge + "원");
입력받은 나이가 아래 조건들도 참이 된다면 함께 출력되는 것을 알 수 있다.
따라서 목적에 따라서 if문을 중첩하던지해서 사용할 필요가 있다.
조건문과 조건연산자
// if문을 이용해서 a, b 변수중 큰 값이 나오도록 출력
int a = 10;
int b = 15;
int max;
if (a>b) {
max = a;
}
else {
max = b;
}
//if문에서 수행할 내용이 한 줄일 경우 블록{중괄호}를 생략할 수 있다.
if (a>b) max = a;
else max = b;
// ==
int a = 10;
int b = 15;
int max;
max = (a > b) ? a : b;
간단한 조건문의 경우 조건연산자를 사용하는 것이 더 바람직할 수 있다.
switch문
하나의 변수나 수식에 대한 다양한 조건을 검사할 때 사용
switch(변수, 수식){case 비교 기준 값:, break, default 사용
ex3) if문을 사용해서 1위 금메달, 2위 은메달, 3위 동메달 이외에는 메달이 없습니다를 출력
System.out.println("순위를 입력");
int race = sc.nextInt();
if(race==1) {
System.out.println("금메달");
} else if (race==2) {
System.out.println("은메달");
} else if (race==3) {
System.out.println("메달");
} else {
System.out.println("메달이 없습니다");
}
// 또는
System.out.println("순위 입력");
int rank = sc.nextInt();
char medal;
if (rank==1)
medal = 'G';
else if (rank==2)
medal = 'S';
else if (rank==3)
medal = 'B';
else
medal = 'X';
System.out.println(medal);
// switch문으로 변경
System.out.println("순위 입력");
int rank = sc.nextInt();
char medal;
switch(rank) {
case 1 : medal = 'G'; System.out.println("금매달");
break;
// 조건이 맞으면 멈추게 하는 키워드
case 2 : medal = 'S'; System.out.println("은매달");
break;
case 3 : medal = 'B'; System.out.println("동매달");
break;
default : medal = 'X'; System.out.println("메달이 없습니다.");
}
//break; 조건이 맞으면 멈추게 하는 키워드
//default; case에 만족하는 조건이 없으면 default
if문의 경우 조건에 비교대상 비교연산자 비교할 기준값이지만
switch문에서 ()가 비교 대상, case 비교연산자, 비교할기준값으로 한다.
즉,
switch(조건) {
case값1 : 수행문1;
break;
case값2 : 수행문2;
break;
...
default: 수행문;}
// 두 개의 정수와 연산자를 입력 받아 연산을 수행하는 switch문 작성
System.out.println("정수1을 입력");
int a = sc.nextInt();
System.out.println("연산자 입력");
char oper = sc.next().charAt(0);
System.out.println("정수2을 입력");
int b = sc.nextInt();
switch(oper) {
case '+' : System.out.println(a+b);
break;
case '-' : System.out.println(a-b);
break;
case '*' : System.out.println(a*b);
break;
case '/' : System.out.println(a/b);
break;
default : System.out.println("정수 및 연산자를 확인");
}
case문 동시에 사용
// 월을 입력 받아 계절 구분하기(단 봄 3~5월, 여름 6~8월, 가을 9~11월, 겨울 12~2월)
System.out.println("1~12월을 입력");
int month = sc.nextInt();
switch(month) {
case 12,1,2 : System.out.println("겨울");
break;
case 3,4,5 : System.out.println("봄");
break;
case 6,7,8 : System.out.println("여름");
break;
case 9,10,11 : System.out.println("가을");
break;
default : System.out.println("월을 제대로 입력");
}
// 월을 입력받아 입력받은 월의 마지막 일을 표시
System.out.println("월을 입력(1~12)");
int month1 = sc.nextInt();
switch(month1) {
case 1, 3, 5, 7, 8, 10,12 : System.out.println(month1+"월은 31일까지");
break;
case 2 : System.out.println(month1+"월은 28일까지");
break;
case 4, 6, 11 : System.out.println(month1 + "월은 30일까지");
break;
default : System.out.println("월을 제대로 입력");
}
case문에 문자열 사용
System.out.println("Gold,Silver,Bronze 중 입력");
String medal = sc.nextLine();
switch(medal) {
case "Gold" : System.out.println("금메달");
break;
case "Silver" : System.out.println("은메달");
break;
case "Bronze" : System.out.println("동메달");
break;
default : System.out.println("문자를 제대로 입력");
}
//
System.out.println("혈액형을 입력");
String blood = sc.nextLine();
switch (blood) {
case "A","a" : System.out.println("A형");
break;
case "B","b" : System.out.println("B형");
break;
case "O","o" : System.out.println("O형");
break;
case "AB","Ab","aB","ab" : System.out.println("AB형");
break;
default : System.out.println("혈액형을 다시 입력");
}
범위 지정
System.out.println("읽은 책 권수");
int book1 = sc.nextInt();
switch(book1/10) {
case 0 : System.out.println("책을 싫어하는 수준");
break;
case 1 : System.out.println("독서를 즐기는 수준");
break;
case 2 : System.out.println("책을 사랑하는 수준");
break;
case 3 : System.out.println("다독");
break;
default : System.out.println("숫자를 다시 입력");
}
switch 조건 정수형 데이터만 인식하기 때문에 소수점아래를 버리기 때문에 10으로 나누면 0, 1, 2, 3 으로 결과가 나온다.
또는
System.out.println("읽은 책 권수");
int book1 = sc.nextInt();
book1 = book1/10;
switch(book1) {
case 0 : System.out.println("책을 싫어하는 수준");
break;
case 1 : System.out.println("독서를 즐기는 수준");
break;
case 2 : System.out.println("책을 사랑하는 수준");
break;
case 3 : System.out.println("다독");
break;
default : System.out.println("숫자를 다시 입력");
}
입력 받은 읽은 책의 권수를 범위(논리합, 논리곱_을 만들어서 저장하기 위한 수식을 먼저 작성
'KDT > Java' 카테고리의 다른 글
231115 Java (0) | 2023.11.17 |
---|---|
231113 Java (0) | 2023.11.13 |
231108 Java - 탐욕 알고리즘, 조건문 2 (0) | 2023.11.08 |
231106 Java - 연산자 2, 조건문 1 (0) | 2023.11.06 |
231102 Java - 연산자 1 (0) | 2023.11.02 |