JAVA
2011. 5. 31. 00:34
컴퓨터가 기계보다 우수한 이유는 조건에 따라 일을 다르게 할 수 있기 때문이다.
자바에서는 if 문과 switch문으로 조건문을 만들 수 있다.
if 조건문
if 문은 두가지 형식으로 만들 수 있는데 블록이 있냐 없냐이다.
if ( 조건식)
위와 같이 if 다음으로 조건을 주어서 계속 값을 확인하고 그중에 하나라도 맞으면
안의 연산을 수행하고 빠져버린다. 값이 나왔다면 다음 연산을 수행하지 않는다.
switch
if문과 같이 식이 참일 때 수행을 하지만 문어다리처럼 여러가지 조건을 만들수 있다.
switch(식){
자바에서는 if 문과 switch문으로 조건문을 만들 수 있다.
if 조건문
if 문은 두가지 형식으로 만들 수 있는데 블록이 있냐 없냐이다.
if ( 조건식)
명령문
예) if(num1 > num2)
System.out.println("num1이 더 큽니다");
과 같이 블록이 없는 것과
if ( 조건식 ){
명령문
}
예) if(num1 > num2){
예) if(num1 > num2)
System.out.println("num1이 더 큽니다");
과 같이 블록이 없는 것과
if ( 조건식 ){
명령문
}
예) if(num1 > num2){
System.out.println("num1이 더 큽니다");
}
과 같이 블록이 있는 것이다.
if문은 조건식이 참일 때 아래를 수행한다.
조건문을 만족하지 않을 때에도 일을 수 행하게 하려면 else를 쓰면된다
if(조건식){
참일 때 명령문
}else{
거짓일 때 명령문
}
과 같이 사용하면 참 과 거짓일 때를 구분하여 두가지 일을 수행할 수 있다.
if문에 if문을 또 한번 쓸 수있다.
dangling else
if문안에 if문사용은 가능하지만 거기다 else까지 넣으면 식이 복잡해진다.
과 같이 블록이 있는 것이다.
if문은 조건식이 참일 때 아래를 수행한다.
조건문을 만족하지 않을 때에도 일을 수 행하게 하려면 else를 쓰면된다
if(조건식){
참일 때 명령문
}else{
거짓일 때 명령문
}
과 같이 사용하면 참 과 거짓일 때를 구분하여 두가지 일을 수행할 수 있다.
if문에 if문을 또 한번 쓸 수있다.
class ifTest {
public static void main(String args[]){
int num1 = 52;
int num2 = 24;
int num3 = 32;
if(num1 > num2) --> 1번
if(num1 > num3) --> 2번
System.out.println("num1이 제일 큽니다");
System.out.println("Done.");
}
}
위와 같이 쓰면 1번이 참이라면 안으로들어가 2번도 검사를 하고 2번도 참이라면 결과값이 출력된다.dangling else
if문안에 if문사용은 가능하지만 거기다 else까지 넣으면 식이 복잡해진다.
if(num1 > num2)--> 1번
if(num1 > num3)--> 2번
System.out.println("num1이 제일 큽니다");
else
System.out.println("Done.");
식이 위와 같다면 과연 else가 1번과 짝을 이루는 else인지 2번과 짝을이루는 else인지
판단하기가 쉽지않은데 이런 else를 dangling else 라고 하는데 danging은
대롱대롱 매달리다라는 의미이다. 자바에선 이 dangling else을 가장 가까운 if문과
짝을 이루라는 규칙이 있기때문에 위에 예제의 2번 if문과 짝을 이루는 else이다.
식이 위와 같다면 과연 else가 1번과 짝을 이루는 else인지 2번과 짝을이루는 else인지
판단하기가 쉽지않은데 이런 else를 dangling else 라고 하는데 danging은
대롱대롱 매달리다라는 의미이다. 자바에선 이 dangling else을 가장 가까운 if문과
짝을 이루라는 규칙이 있기때문에 위에 예제의 2번 if문과 짝을 이루는 else이다.
class dangingelse {
public static void main(String args[]){
int num1 = 152;
int num2 = 173;
if(num1 > num2) --> 1
if(num1 > 100) -->2
System.out.println("num1 = " + num1 );
else -->3
if(num2 > 100) -->4
System.out.println("num2 = " + num2 );
System.out.println("Done.");
}
}
위 예제는 dangling else를 모르는 사람이 짠
num1과 num2중에 큰 수가 100보다 클 때만 그 값을 출력하는 프로그램이다.
위 예제 에서보면 1을 거친 후 거짓이기 때문에 3번의 else로 빠지겠지 라고 생각하면
dangling else를 모르는거다, dangling else는 가장 가까운 if와 짝을 이루는 것이기 때문에
실질적으론 2번과 짝을 이루는 else이다 , 결과적으로 1번의 if문이 거짓으로 되면
그 안으로 타고들어가지 않고 바로 빠지게되는데 2번의 if문에 접근을 못하니 3번의
else도 당연히 접근을 못한다. 그러므로 1번이 거짓이 되면서 아래 나머지 연산은
모두 수행하지 않고 "Done" 만 찍힌다. 꼭 기억하자 꼭.
else if 라는 것도 있는데 이는 if문 다음에 와서 다른 조건을 계속 나열하는 것이다 .
num1과 num2중에 큰 수가 100보다 클 때만 그 값을 출력하는 프로그램이다.
위 예제 에서보면 1을 거친 후 거짓이기 때문에 3번의 else로 빠지겠지 라고 생각하면
dangling else를 모르는거다, dangling else는 가장 가까운 if와 짝을 이루는 것이기 때문에
실질적으론 2번과 짝을 이루는 else이다 , 결과적으로 1번의 if문이 거짓으로 되면
그 안으로 타고들어가지 않고 바로 빠지게되는데 2번의 if문에 접근을 못하니 3번의
else도 당연히 접근을 못한다. 그러므로 1번이 거짓이 되면서 아래 나머지 연산은
모두 수행하지 않고 "Done" 만 찍힌다. 꼭 기억하자 꼭.
else if 라는 것도 있는데 이는 if문 다음에 와서 다른 조건을 계속 나열하는 것이다 .
class elseif {
public static void main(String args[]){
int num1 = 74;
if(num1 < 10)
System.out.println("num1 = 10미만" );
else if(num1 < 100)
System.out.println("num1 = 10이상 100미만" );
else if(num1 < 1000)
System.out.println("num1 = 100이상 1000미만" );
else
System.out.println("num1 = 100이상" );
System.out.println("Done.");
}
}
위와 같이 if 다음으로 조건을 주어서 계속 값을 확인하고 그중에 하나라도 맞으면
안의 연산을 수행하고 빠져버린다. 값이 나왔다면 다음 연산을 수행하지 않는다.
switch
if문과 같이 식이 참일 때 수행을 하지만 문어다리처럼 여러가지 조건을 만들수 있다.
switch(식){
case 값1:
명령문
break;
명령문
break;
case 값2:
명령문
break;
case 값3:
명령문
break;
default:
명령문
break;
명령문
break;
case 값3:
명령문
break;
default:
명령문
break;
}
()안의 식을 계산하고 나서 그에 맞는 값에 따라 case를 통과하고 break;를 만나서
빠져나온다. 식의 결과가 case문 중에 일치하는 문장이 없다면 default에 있는 명령문이
수행된다.
break;문을 안써도 실행은 되는데 만약 3번 case문에 값을 안썼다면 식의 결과값이
값 3일 때 3번 case문의 명령문을 수행한후 break;가 없기 때문에 아래의 default의
명령문도 수행되어 버린다, 꼭 나쁜것만은 아니지만 깔끔하지 못하다.
()안의 식을 계산하고 나서 그에 맞는 값에 따라 case를 통과하고 break;를 만나서
빠져나온다. 식의 결과가 case문 중에 일치하는 문장이 없다면 default에 있는 명령문이
수행된다.
break;문을 안써도 실행은 되는데 만약 3번 case문에 값을 안썼다면 식의 결과값이
값 3일 때 3번 case문의 명령문을 수행한후 break;가 없기 때문에 아래의 default의
명령문도 수행되어 버린다, 꼭 나쁜것만은 아니지만 깔끔하지 못하다.
'JAVA' 카테고리의 다른 글
JAVA] 11. 매소드 호출문 (0) | 2011.06.02 |
---|---|
JAVA] 10. 반복문 (0) | 2011.05.31 |
JAVA] 8. 배열의 선언, 생성, 이용 (0) | 2011.05.28 |
JAVA] 7. 여러가지 대입문 (1) | 2011.05.26 |
JAVA] 6. 로컬 변수의 선언과 이용 (0) | 2011.05.25 |