본문 바로가기

프로그래밍/Java

[Java] 4. 제어문

조건문

우리가 지금껏 작성해왔던 코드는 모두 위에서 아래로 흐르는 방식이었다.

제어문은 프로그램 수행 흐름을 기존과 다르게 바꾸는 역할을 한다.

 

그 중 조건문은 조건에 따라서 다른 문장이 수행 되도록 바꾼다.

 

조건문에는 if문과 switch문이 있다.

switch문은 if문으로 호환이 가능하나 if에서 switch문은 불가능한 경우가 있다.

 

우선 if문부터 알아보도록 하자.

 

if문의 기본적인 형식은 아래와 같다.

 

첫 번째 숫자보다 두 번째 숫자가 큰 경우와 같은 경우를 제외한 나머지는 작은 경우밖에 없으므로 else를 사용했다.

 

()안에 조건식이 true면 {}안에 내용을 실행하고 false면 실행하지 않게된다.

if문 안에 if문을 중첩해서 사용하는 것도 가능하며

else를 사용하여 false일 경우 수행할 문장도 지정해 줄 수 있다.

 

이 때, else는 그 외의 경우를 전부 포함하기 때문에 따로 조건식이 붙지 않는다.

else if를 사용하여 조건식을 2개 이상 넣을 수 있지만

 이 경우 조건문이 true로 일 때 그 뒤에 조건은 실행하지 않는다.

 

여기서 Scanner라는 클래스를 사용했는데 사용자로부터 입력되는 값을 받아와주는 클래스이다.

Scanner a = new Scanner(System.in); 으로 생성해 준 뒤

단축키 Ctrl + Shift + o 로 스캐너를 import 하면 된다.

이 후 정수는 nextInt();, 실수는 nextFloat();, nextDouble();, 문자열은 next();, nextLine();으로 값을 받아올 수 있으며

여기서 next(); 는 띄어쓰기를 구분인자로 생각하기 때문에 각각 저장하고

nextLine();은 문자열에 띄어쓰기나 줄 구분까지 저장한다.

 

다음으로 switch문은 조건식 하나로 여러 경우를 처리해야 할 때 사용하며 조건식의 결과는

정수, 문자 혹은 문자열이여야 한다.

 

이런 식으로 메뉴를 만들때 자주 사용했다.

 

사용 시 위와 같이 조건식의 결과 값이랑 같은 case문으로 이동하고 해당 case문을 수행하게 된다.

결과 값에 해당하는 case문이 없는 모든 경우 즉, 실행할게 없는 경우 default문의 문장을 수행한다.

 

그런데 만약 case문 마다 break문을 사용하여 빠져나갈 곳을 만들어 놓지 않는다면

빠져나갈 곳이 없기때문에 무조건 default문을 수행하게 되니 설계 의도가 아니라면 반드시 break문을 사용하도록 하자

break문의 관한 내용은 포스팅 가장 마지막 챕터에서 다룬다.

 

반복문

조건문이 한가지의 문장을 한 번 수행한다고 하면 반복문은 말그대로 특정 문장을 반복해서 수행이 가능하다.

종류로는 for문과 while문이 있고 for문은 반복할 횟수가 정해져있을때, while 문은 반복할 횟수가

정해져 있지 않을때 주로 사용한다. 그러나 조건문과 다르게 호환이 완벽하게 가능은 하다.

 

우선 for문은 for(초기식; 조건식; 증감식) {수행될 문장;} 의 구조를 가진다.

 

1부터 입력한 숫자 미만의 정수를 출력하게 해보았다.

처음엔 초기식을 확인하고 조건식을 확인한 뒤 조건식이 true면 문장을 수행하고 false면 수행하지 않는다.

그 뒤론 다시 증감식을 연산하고 조건식을 확인 한뒤 true면 문장을 수행하고 false면 수행하지 않는다. 

이런식으로 조건식에 false인 결과가 나올때까지 반복해서 실행하게 된다.

 

마찬가지로 중첩해서 사용이 가능하고 중첩하는 경우 아래와 같은 구조를 가진다.

이 경우 짜여진 코드를 보면 그렇게 어려워 보이지 않지만 실제로 해보면 헷갈리는 경우가 잦으므로

노트같은 곳에 어떤 순서로 운용이 되는지 직접 손으로 작성해서 완벽히 익숙하게 익히는 것이 좋은 방법이다.

 

while문은 while문과 do ~ while문 2가지 종류의 반복문이 있다.

 

menu가 4와 일치하면 조건식이 false가 되므로 종료가 된다.

 

while문은 조건식이 true일 때 문장을 수행하고 문장 수행이 끝나면 조건식을 확인해서 true면 다시 수행한다.

조건식이 false가 될 때까지 수행하여 false가 되면 반복문이 종료된다.

따라서 조건을 벗어나게 할 증감식이나 분기문이 없다면 무한히 반복하게 된다.

분기문은 이 포스팅의 다음 챕터에서 다룬다.

 

만약 while문을 사용했다면 조건식이 처음부터 false이기 때문에 즉시 종료되었을 것이다.

do ~ while문은 while문과 다르게 무조건 한 번 이상 수행을 한다.

while문의 경우는 조건식이 처음부터 false면 아무것도 수행을 하지않지만

do ~ while문은 조건식에 상관없이 일단 수행을 한번은 하고나서 조건식을 확인하기 때문이다.

그 외에는 while문과 동일하다.

 

분기문

분기문에는 break문과 coutinue문이 있으며

break문은 반복문에서 자신이 포함된 가장 가까운 반복문을 빠져나간다.

 

50에서 60까지 정수만 출력했다.

 

continue문은 break문과 다르게 반복문 내에서만 쓰이는 구문으로 continue문 사용시 그 아랫 부분은 실행하지 않고

다시 반복문을 실행한다. 따라서 for문의 경우 증감식으로 이동하고 while문의 경우 조건식으로 이동한다.

전체 반복 중에서 특정 조건을 만족하는 경우를 제외하고 싶을때 if문과 같이 활용하여 유용하게 쓸 수 있다.

'프로그래밍 > Java' 카테고리의 다른 글

[Java] 6. 객체  (0) 2023.02.21
[Java] 5. 배열  (0) 2023.02.21
[Java] 3. 연산자  (0) 2023.02.19
[Java] 2. 변수  (0) 2023.02.19
[Java] 1. 자바의 설치  (0) 2023.02.19