조건문
프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나. 조건에 따라 다른 문장이 수행되도록 함.
if문
if (조건식) { }
만약 조건을 충족한다면 실행하라. 조건식의 결과 값이 true면 {}안의 내용 실행, false면 실행 X
if~else문
if(조건식) { A } else { B }
조건식의 결과 값이 true면 A의 내용 실행, false면 B의 내용 실행.
if~else if~else문
if(조건식) { A } else if(조건식2) { B } else { C }
조건식의 결과 값이 true면 A의 내용 실행, 조건식2의 결과 값이 true면 B의 내용 실행. 모두 false일 경우 C의 내용 실행
else if 추가 가능. 조건문이 true면 이후 조건은 실행하지 않음. 조건 나열 순서 유념
중첩 if문
if (조건식) { if (조건식2) { if(조건식3) { … } else if (조건식4) { … } else { … } } else { …} } else if (조건식5) { … } else { … }
조건식이 true이면 중첩된 if문을 만나고, 조건식 2도 true이면 또 중첩된 if문을 만나, 조건식 3이 true이면 …을 실행한 뒤 같은 위계의 else if와 else를 수행하지 않고 지나감. 그 뒤의 …도 모두 수행하지 않고 지나가 종료.
들여쓰기에 유의해야 각 조건의 위계를 확인하기 쉬움.
아래 예시로 확인
public class Conditional {
public void testIf() {
int kor = 87;
int math = 55;
int eng = 68;
int sum = kor + math + eng;
double avg = sum / 3.0; // or sum 앞에 double 강제 형변환
System.out.println("합계 : " + sum);
System.out.println("평균 : " + avg);
// if
if (avg >= 60) {
System.out.println("합격");
}
// else
else {
System.out.println("불합격");
}
// if - else if - else
if (avg >= 60) {
System.out.println("합격");
} else if (avg >= 40) {
System.out.println("보충 수업");
} else {
System.out.println("불합격");
}
//중첩 if문
String grade = "";
if(kor >= 80) {
grade = "A";
if (kor >= 95) {
grade += "+";
}else if (kor >= 85) {
grade += "0";
}else {
grade += "-";
}
}else if (kor >= 60) {
grade = "B"; //75점 이상이면 B+, 65점 이상이면 B0, 나머지 B-
if (kor >= 75) {
grade += "+";
}else if (kor >= 65) {
grade += "0";
}else {
grade += "-";
}
}else {
grade = "C";
//55점 이상이면 C+, 45점 이상이면 C0, 나머지 C-
if (kor >= 55) {
grade += "+";
}else if (kor >= 45) {
grade += "0";
}else {
grade += "-";
}
}
System.out.println("국어 성적은 " + grade + " 입니다.");
}
}
결과
합계 : 210
평균 : 70.0
합격
합격
국어 성적은 A0 입니다.
switch문
switch ( 조건문 ) {
case 1: case문
break;
case 2: case문
…
defalt: //일치하는 case문이 없을 때 }
조건식 하나로 많은 경우의 수 처리할 때 사용
조건식 결과는 정수, 문자, 문자열. 실수는 불가능.
break: 빠져나오기. break가 없으면 이후의 실행문 전부 실행
public void testSwitch() {
//switch문
//정수, 문자, 문자열 가능
Scanner sc = new Scanner(System.in);
System.out.print("과일 이름 입력 : ");
String fruit = sc.nextLine();
int price = 0;
switch(fruit) {
case "귤" :
price = 500;
break;
case "사과" :
price = 1000;
break;
case "바나나" :
price = 2000;
break;
default:
System.out.println("해당하는 과일이 없습니다.");
break;
}
System.out.println(fruit + "의 가격은 " + price + "원 입니다.");
}
결과
과일 이름 입력 : 포도
해당하는 과일이 없습니다.
포도의 가격은 0원 입니다.
Switch 실습문제..
두 개의 정수를 입력 받고, 문자 혹은 문자열로 연산기호(+, -, *, /, %)를 입력 받아 연산의 수행결과를 출력하시오.
첫 번째 정수 입력 : 5
두 번째 정수 입력 : 7
연산 기호 입력 : *
수행 결과 : 5 * 7 = 35
※ 단, 0으로 나눌 경우 "0으로 나눌 수 없습니다"를 출력하고 결과 값을 0으로 처리하며 연산 기호에 없는 문자를 입력하면 "입력하신 연산은 없습니다. 프로그램을 종료합니다."를 출력 후 프로그램을 종료하시오.
몰랐던 것: 프로그램 종료하기, 0으로 나누기 안 됨
public void method2() {
// 문제 2 두 정수와 연산자 입력받아 연산 결과 출력
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 정수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두 번째 정수 입력 : ");
int num2 = sc.nextInt();
System.out.print("연산 기호 입력 : ");
char op = sc.next().charAt(0);
int result = 0;
switch(op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if(num2 != 0) {
result = num1 / num2;
}else {
System.out.println("0으로 나눌 수 없습니다.");
}
break;
case '%':
result = num1 % num2;
break;
default :
System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
return; //종료
}
System.out.println("수행 결과 : " + num1 + " " + op + " " + num2 + " = "
+ result);
}
결과1 - 일반 연산
첫 번째 정수 입력 : 10
두 번째 정수 입력 : 25
연산 기호 입력 : +
수행 결과 : 10 + 25 = 35
결과2 - 0으로 나누기
첫 번째 정수 입력 : 10
두 번째 정수 입력 : 0
연산 기호 입력 : /
0으로 나눌 수 없습니다.
수행 결과 : 10 / 0 = 0
결과3 - 다른 연산 기호 입력 시
첫 번째 정수 입력 : 10
두 번째 정수 입력 : 5
연산 기호 입력 : &
입력하신 연산은 없습니다. 프로그램을 종료합니다.
'TIL > JAVA' 카테고리의 다른 글
| 객체 지향 프로그래밍 - 클래스와 객체 (0) | 2022.07.20 |
|---|---|
| Java 기초 - 반복문, 분기문 (0) | 2022.07.19 |
| Java 기초 - 연산자(Operator) (0) | 2022.06.18 |
| Java 기초 - 상수, 오버플로우, 형변환 (0) | 2022.06.15 |
| Java 기초 - 출력메소드, 입력받기 (0) | 2022.05.26 |