Switch문
Switch~case
수식 혹은 변수의 값을 확인하여 수행될 부분으로 바로 이동해서 수행하는 제어문
switch(수식 혹은 변수){
case 값1 :
코드
case 값2 :
코드
default :
코드
}
-----------------------------------------------------------------------------
이동이 된 후 코드를 수행하고 다음 조건에 있는 코드들 까지 모두 수행된다
int a = 2;
switch(a){
case 값1 :
코드
case 값2 :
코드
default :
코드
}
-----------------------------------------------------------------------------
이동이 된 후 코드를 수행하고 다음 조건에 있는 코드를 수행하고 싶지 않을 때는 중간에 break를 써준다
int a = 2;
switch(a){
case 값1 :
코드
break;
case 값2 :
코드
break;
default :
코드
}
-----------------------------------------------------------------------------
if문과 다른점
if ~ else if ~ else문 같은 경우 조건이 참인 부분을 만날 때까지 위에서부터 차례차례 비교하여 내려오기 때문에 참인 조건이 하단부에 있을 경우 작업량이 많아진다
switch ~ case 같은 경우에는 수식이나 변수의 값을 확인하여 값에 해당하는 부분으로 바로 이동하므로 비교하는데 까지 걸리는 작업량이 많지가 않다
단 switch ~ case는 수식이나 변수의 값이 정수일 경우에만 사용이 가능하다
효율적인 switch~case
int a = 2; int a = 2;
if(a == 1){ switch(a){
코드 case1 :
}else if (a == 2){ 코드
코드 break;
}else if (a == 3){ case2 :
코드 코드
} break;
}
-----------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
* 두 개의 숫자와 연산자 하나를 입력받고 연산 결과를 출력하는 프로그램
*/
public class switch project
public static void main (String[ ] args) {
// TODO Auto-generated method stub
try{
// 두 개의 숫자와 연산자를 입력받는다.
InputStreamReader ir = new InputStreaReader(System.in);
BufferedReader br = new BufferedReader(ir);
System.out.print("1번째 숫자를 입력해주세요 : ");
String str1 = br.readLine( );
int number1 = Integer.parseInt(str1);
System.out.print("2번째 숫자를 입력해주세요 : ");
String str2 = br.readLine( );
int number2 = Integer.parseInt(str2);
System.out.print("연산자를 입력해주세요 + - * / : ");
char op = (char)System.in.read( );
System.in.read( );
System.in.read( );
// 연산을 수행한다.
int result = 0;
switch(op){
case '+' :
result = number1 + number2;
break;
case '-' :
result = number1 - number2;
break;
case '*' :
result = number1 * number2;
break;
case '/' :
result = number1 / number2;
break;
}
// 결과를 출력한다.
//System.out.println(number1 + op +number2 + "=" + result);
System.out.printf("%d %c %d + %d", number1, op, number2, result);
}catch(Exception e) { }
}
-----------------------------------------------------------------------------