if 문
1) 수행할 문장이 단행일 경우 {} 블럭 생략 가능
if (조건식){
조건에 만족할 때 수행할 문장
}
1) 조건을 만족할 때와 만족하지 않을 때, 각각 서로 다른 수행문장이 실행
2) 수행할 문장이 단행일 경우 {} 블럭 생략 가능
if (조건식){
조건값이 true일 때 수행할 문장
}else{
조건값이 false일 때 수행할 문장
}
1) 조건 비교가 한 가지로 충분하지 않을 경우에 사용
2) 예.. : 91점 이상 A학점, 90점이하 81점 이상 B학점...
if (조건식){
조건값이 true일 때 수행할 문장
}else if (조건식2){
조건값이 false일 때 수행할 문장
}else {
조건식1, 조건식2 모두 false일 때 수행할 문장
}
=====실습 예제=====
package com.playground.java;
import java.io.IOException;
public class TEST04 {
public static void main(String[] args) throws IOException{
char a = 0;
char b = 0;
char c = 0;
int d = 0;
int x = 0;
System.out.println("암호문 = ");
a = (char) System.in.read();
b = (char) System.in.read();
c = (char) System.in.read();
System.in.read();
System.in.read();
System.out.print("키워드 (1~3) : ");
d= System.in.read() - '0';
if (d==1) {
a+=1;
b+=1;
c+=1;
}else if(c==2){
a+=2;
b+=2;
c+=2;
}else if(d==3) {
a+=3;
b+=3;
c+=3;
}else {
System.out.println("키워드 오류");
System.exit(0);
}
System.out.println("변경된 암호문"+a+b+c+"입니다.");
System.out.println();
System.out.print("복호화 키워드 = ");
d = System.in.read() -48;
if(d!=1 && d!=2 && d!=3) {
System.out.println("복호화 범위 초과");
System.exit(0);
}
a-=d;
b-=d;
c-=d;
System.out.println("전송된 암호문은"+a+b+c+"입니다.");
}
}
switch 문
1) 다양한 처리문을 두고 조건 값에 의해 하나의 처리문이나 여러 개의 처리문을 한 번에 수행하는데 유용한 분기(비교)문
2) if문은 조건 값이 boolean형, switch문은 정수형(byte, short, int)과 문자형(char)
3) long, 문자열, boolean, float, double형 사용불가
4) break문은 하나의 조건값 마다 하나의 수행문만 필요할 경우 사용
break문이 없을 경우 다음 break문을 만날 때 까지 모든 수행문 실행
5) 인자값과 비교값 1,2,3이 모두 일치하지 않는다면 default 실행
6) 주의사항 : case 뒤에 오는 조건값이 중복되지 않도록 해야 한다.
그렇지 않으면 case를 구분하는 값이 복제되어 중복되었다는 오류가 발생한다.
switch (인자값) {
case 조건값1 : //세미콜론이 아닌 콜론이다!
수행문; break;
case 조건값2 :
수행문; break; //break문은 하나의 조건 값마다 넣어주는 것이 적당하며 만약 없을 시에는 다음 break문을
case 조건값3 :
수행문; break; // 만날 때까지 모든 수행문을 처리한다.
default : // 받은 인자값이 case문의 조건값1에서 조건값3까지
수행문; break; // 일치하는 것이 단 하나도 없다면 default를 수행한다.
}
=====실습 예제=====
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package com.playground.java; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class TEST06_switch { public static void main(String[] args) throws Exception, IOException { int kor; int eng; int mat; float avg; InputStreamReader is = new InputStreamReader(System.in); //문자 스트림을 읽기 위한 클래스 BufferedReader br = new BufferedReader(is); // 다른 Reader들을 버퍼링 하기 위한 클래스 System.out.println("국어 = "); kor = Integer.parseInt(br.readLine()); //Enter를 누르기 전까지의 키보드 입력을 스트림에 저장. System.out.println("영어 = "); //이때, readLine은 String형으로 문자를 읽어오게 된다. eng = Integer.parseInt(br.readLine()); //그래서 Integer클래스의 parseInt가 필요한 것. (문자열을 int형 정수로 바뀌게 하려고!) System.out.println("수학 = "); mat = Integer.parseInt(br.readLine()); avg = (kor+mat+eng) / 3.f; switch((int) (avg/10)) { case 10: case 9: System.out.println("당신의 학점은 A입니다."); break; case 7: System.out.println("당신의 학점은 A입니다."); break; case 6: System.out.println("당신의 학점은 A입니다."); break; default: System.out.println("당신의 학점은 F입니다."); break; } } } | cs |