Ch04. 조건문과 반복문

·2022년 8월 1일
0

java의정석

목록 보기
1/5

java에는 조건문과 반복문이 존재한다. 문법은 c언어와 거의 동일하다.

if

만일(if) 조건식이 참(true)라면 괄호{} 안의 문장들을 수행하라는 의미.

if(조건식){
    //조건식이 참일때 수행할 문장
}

if 문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성된다.

비교연산자: >,>=,<=,<,==
논리연산자: ||(or), &&(and)

즉, 조건식의 결과가 반드시 true or false여야함!

else if, else

말 그대로다.
if를 선언한 상태에서 if문 안의 조건식 외에 다른 조건을 걸고 싶을 때 쓴다.

탕수육을 먹을 때...
찍먹파라면? (if)
부먹파라면? (else if)
찍먹파도 부먹파도 아니라면? (else)

이처럼 else는 나머지 조건을 통틀어서 제시할 때 사용한다.
또한, else와 else if 모두 if문이 제시된 이후에 사용이 가능하다.

switch

if문은 조건식의 결과값이 참, 거짓 두가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야하는 불편함이 있다.

이를 switch로 해결할 수 있는데, switch는 case와 break 함께 사용한다.

  1. 조건식을 계산한다
  2. 조건식의 결과와 일치하는 case문으로 이동한다.
  3. 이후의 문장들을 수행한다.
  4. break문이나 switch문의 끝을 만나면 switch문을 탈출한다.

앞서 부먹 찍먹 예시를 switch로 바꿔보자.

switch(탕수육 먹을 때){
    case 찍먹파 :
        system.out.println("당신은 찍먹파군요!");
        break; // switch문 탈출
    case 부먹파 :
        System.out.println("당신은 부먹파군요!");
        break;
    default :
        System.out.println("설마 소스 안드세요?");
        //이미 switch문의 마지막이므로, break는 필요없다 

switch문은 if문과 달리 조건식의 결과가 정수 또는 문자열이여야 한다.

다른 말로는 if,switch모두 조건식 안에 실수,변수를 넣을 수 없다!

만약 break를 쓰지 않는다면?

switch문을 탈출하지 않고 다시 그 아래의 case로 간다.


반복문- for, while, do-while

어떠한 문구를 10번 연속 출력해야한다고 치자.
system.out을 10번 연속 써도 되지만, 코드가 길어진다.

또한, 특정 조건을 걸고 싶을 때 코드 짜기가 난감해진다.
(예: 10번 중 짝수번째 출력 시 다른 문구를 출력하고 싶을 때)

for문

for문은 반복 횟수를 알고 있을 때 적합하다.
for(초기화; 조건식; 증감식)으로 선언하며, 조건식이 참일 경우에만 괄호 안 명령을 실행한다.

for(int i=1;i<=5;i++){
    반복할 명령
}

향상된 for문

배열, 컬렉션 등에 저장된 요소를 읽어올 때 사용한다.
파이썬으로 따지면 for을 사용할 때 range대신 in을 사용하는 것과 비슷하다.

#python
arr=[1,2,3]
for i in arr:
    print([%d],i)

위가 파이썬 코드라면

//java
int [] arr={1,2,3};
for(i:arr)
{   System.out.println(tmp);}

자바에서는 이처럼 사용한다.

while, do while

while문은 특정 횟수보다는 특정 조건(예 : 어떠한 변수가 어떠한 값을 충족할 때 까지 반복)이 붙었을 때 사용하기 좋다.

int cnt=0;

while (cnt<10)
{   반복할 명령
     cnt+=1; // 종료 조건을 꼭 넣어줘야한다!
}

이처럼 while문은 반복문을 돌아도 언젠간 종료될 수 있도록 해줘야한다.

do while은 반복문을 일단 조건 관계 없이 한 번은 실행해야 하는 경우 사용한다.

do{
    최소 1회 이상 수행되고, while 속 조건문이 참일때까지 반복할 명령
} 
while(조건식)

그렇다면 조건식을 만족하지 않아도 반복문을 탈출하고 싶을 때는 어떡할까?

break

break를 사용할 시, 반복문 속 조건문과 관계없이 반복문을 탈출한다. 이 때, 자신이 속한 모든 반복문을 벗어나는 것이 아니라 가장 가까운 반복문을 벗어난다.
(예: 이중 for문을 사용했으나, 두번째 for문에서 break가 걸렸을 시, 첫번째 for문까지 탈출하는 것이 아닌, 두 번째 for문만 탈출한다)

int cnt=1;
while(cnt>0)
{
    System.out.println("몇 번 실행될까요?");
    break;
}

//해당 반복문은 1회만 실행된다.

continue

반복문을 돌던 중, continue를 만난다면 그 당시 반복문만 무시한다.

int cnt=1;
while(cnt>0)
{
    if (cnt==5)
        continue; //i가 5일 때에는 아래 반복문을 실행하지 않는다.
    System.out.println(cnt);
    cnt++;    
}

//해당 반복문은 1회만 실행된다.

반복문에 이름 지어주기

함수처럼 반복문에 따로 이름을 지어줄 수도 있다.

int cnt=0;
OneToTen: while(cnt<=10)
{
    cnt++;
    System.out.println(cnt);
    
    if (cnt==5)
        break OneToTen;
}
/*
출력결과
1
2
3
4
*/
profile
풀스택 호소인

0개의 댓글