º Language º/Java

[자바기초] 오류의 종류와 제어문(선택문) 정리노트

Poony 2023. 3. 13. 21:11

 * 자바 오류의 종류

 

1. 문법오류

 

- 자바문법에 맞지 않는 오류를 말하며 컴파일시에 오류메세지를 출력 해 줍니다.

- 오류메세지를 파악하여 오류를 제거한 후 저장하고 다시 컴파일 하여 문제를 해결합니다.

 

2. 논리오류

 

- 컴파일도 되고 실행도 잘 되지만 기대하는 대로 바람직하게 동작하지 않는 것을 말합니다.

- 프로그램 속에 "버그"가 들어있다고 하고 "버그"를 잡아가는 과정을 "디버깅"이라고 합니다.

- 디버깅 할 때에는 의심 부분을 실행하지 않도록 주석으로 처리 한다든지 진행되는 변수의 값을 출력을 해 본다든지 하여 문제를 해결할 수 있어요. (편집도구 디버깅 툴을 이용할 수 있어요)

 

3. 실행오류

 

- 컴파일도 되고 실행도 잘 되지만 때로는 실행할 때 발생하는 오류를 말합니다.

- 실행시에 사용자의 부주의로 발생하는 오류를 발합니다. 예를 들어 숫자(정수)를 입력해야 하는데

문자를 입력하는 경우입니다.

- 예외처리를 통하여 문제를 해결할 수 있습니다.

 

 

* 제어문 (선택문, 반복문)

 

- 프로그램의 흐름을 제어하기 위한 문장을 말합니다.
 
 
1.선택문 (if, switch)

- 어떤 상황에 따라 동작시켜야 할 명령어가 다를때에 사용하는 문장입니다.

 

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;
> if, else 모두 2개 이상의 명령어가 있는 경우에는 중괄호를 넣어주어야 정확한 결과값을 가집니다. 명령어가 1개의 경우 중괄호를 선택적으로 넣을 수 있습니다.

 

 

2)  중첩 if문

 

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

손지민님의 별자리는 게자리입니다.

- 처리조건: 네이버 별자리를 검색하여 참조