[자바기초] 오류의 종류와 제어문(선택문) 정리노트
* 자바 오류의 종류
1. 문법오류
- 자바문법에 맞지 않는 오류를 말하며 컴파일시에 오류메세지를 출력 해 줍니다.
- 오류메세지를 파악하여 오류를 제거한 후 저장하고 다시 컴파일 하여 문제를 해결합니다.
2. 논리오류
- 컴파일도 되고 실행도 잘 되지만 기대하는 대로 바람직하게 동작하지 않는 것을 말합니다.
- 프로그램 속에 "버그"가 들어있다고 하고 그 "버그"를 잡아가는 과정을 "디버깅"이라고 합니다.
- 디버깅 할 때에는 의심 부분을 실행하지 않도록 주석으로 처리 한다든지 진행되는 변수의 값을 출력을 해 본다든지 하여 문제를 해결할 수 있어요. (편집도구 디버깅 툴을 이용할 수 있어요)
3. 실행오류
- 컴파일도 되고 실행도 잘 되지만 때로는 실행할 때 발생하는 오류를 말합니다.
- 실행시에 사용자의 부주의로 발생하는 오류를 발합니다. 예를 들어 숫자(정수)를 입력해야 하는데
문자를 입력하는 경우입니다.
- 예외처리를 통하여 문제를 해결할 수 있습니다.
* 제어문 (선택문, 반복문)
- 어떤 상황에 따라 동작시켜야 할 명령어가 다를때에 사용하는 문장입니다.
1) if문을 사용하는 기본 형식
a;
b;
if( 조건식 )
c;
d;
e;
> if문 결과값이 참이면 c, d, e 값이 출력 / 거짓인 경우 d, e값이 출력됩니다.
a;
b;
c;
if ( 조건식 )
d;
else
e;
f;
g;
> if문 결과값이 참이면 d, f, g 값이 출력 / 거짓인 경우 e, f, g 출력됩니다.
a;
b;
if( 조건식 ) {
c;
d;
}
else {
e;
f;
}
g;
h;
a;
b;
if( 조건식1 ) {
if( 조건식2 ) {
c;
else
d;
}
else {
if( 조건식3 )
e;
else
f;
}
}
g;
h;
> '조건식 1'의 값이 참인 경우 아래의 if문 '조건식 2'에서 또 한번 참 거짓을 나누어 값을 정합니다.
'조건식 1'의 값이 거짓인 경우 else (조건식3) 에서 참, 거짓의 결과에 따라 결과 값을 정하게 됩니다.
* 3개 이상의 문장 중 하나를 선택하는 조건문
if( 조건식1 )
a;
else if( 조건식2 )
b;
else if( 조건식3)
c;
else if( 조건식4 )
d;
...
> 여러 가지의 조건을 통해 결과 값을 도출하고자 할 때에는 else if 조건식을 활용합니다. 개수의 제한 없이 사용이 가능합니다.
연습1)
사용자한테 0~9사이의 정수를 입력받아 한글표기식 출력하는 프로그램을 작성해보세요.
실행 예 : 0~9사이의 정수를 입력하세요==> 4 -> 사
연습2) 어떤사람의 태어난 월을 입력받아 계절명을 출력하는 프로그램을 작성해 봅니다.
실행 예 : 몇월에 태어났나요? -> 3 -> 3월은 봄입니다.
처리조건 : 3,4,5 봄 / 6,7,8 여름 / 9,10,11 가을 / 12,1,2 겨울
* switch ~ case 문
- '항'에는 변수나 변수를 활용한 수식이 올 수 있고, 항의 자료형은 정수이거나 문자열이 될 수 있어요.
- 항의 값에 따라 해당하는 case로 바로 이동하여 문장을 수행시키며 해당 case가 없으면 default의 문장을 실행합니다.
- 각 case문에는 필요하다면 break가 올 수 있어요! break를 만나면 switch문을 탈출하라는 의미입니다.
- 항의 값에 따라서해당 case로 바로 이동한다음 거기서 부터 break를 만나기 전까지 모든 문장을 실행합니다.
- 만약 break가 없다면 해당 case부터 swtich 문 안의 문장 전체를 실행합니다.
- 내가 해결해야 하는 문제에 따라 적절한 위치에 break를 둘 수 있어요.
switch(항){
case 값1:
문장1;
[break;]
case 값2:
문장2;
[break;]
case 값3:
문장3;
[break;]
..
default:
문장n;
[break;]
}
> 위와 같이 판별해야 하는 조건식이 3개 이상일때에 if문 보다는 switch~case문을 이용하여 훨씬 간결하게 문장을 표현할 수 있습니다.
* switch와 if문의 혼합 형식
a;
b;
switch(항1){
case 값1:
~~
case 값2:
~~
}
switch(항2){
case 값1:
~~
case 값2:
}
if(조건식){
switch(){
}
}
else{
switch(){
}
}
switch( 항 ){
case 값1:
if(조건1)
~~~
else
~~~
break;
case 값2:
if(조건2)
~~~
else
~~~
break;
}
// 아래의 코드처럼 한줄로 작성도 가능
switch( 항 ){
case 값1: if(조건1) ~~~ else ~~~ break;
case 값2: if(조건2) ~~~ else ~~~ break;
}
> 문제 해결에 따라서 if나 switch문이 혼합될 수 있고, 여러 개 올 수도 있습니다.
연습)
- 사용자 한테 이름, 생월, 생일을 입력받아 별자리를 판별하여 출력하는 프로그램을 작성해 봅니다.
- 실행 예 :
이름을 입력하세요==> 손지민
생월을 입력하세요==> 6
생일을 입력하세요==> 22
손지민님의 별자리는 게자리입니다.
- 처리조건: 네이버 별자리를 검색하여 참조