본문 바로가기
Develope_Web&App/01_Java & JavaFX

[Java] Chap04 조건문과 반복문

by 스타트업_디벨로퍼 2021. 1. 27.

1. 조건문 - if, switch

1.1 if문

만일(if) 조건식이 참이면 괄호 안의 문장들을 수행하라

if(조건식) {
}

if(조건식) {
} else if(조건식) {
} else if(조건식2){
} else if (조건식 3){
}else {
}

위 경우 앞의 조건을 제외한 조건에서 설정하여 보다 간결하게 작성하는 것이 중요하다!!

1.5 Switch 문

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

위와 같이 권한을 달리하게 쓰는 경우도 있다. / 이경우 레벨2 면 2,1의 경우 가능 레벨 3면 3,2,1 모두 가능해진다.

switch문의 제약 조건

  1. switch 문의 조건식 결과는 정수 또는 문자열이어야 한다.
  2. case 문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
package chap04;

import java.util.Scanner;

public class FlowEx6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("현재 월을 입력하세요.>");
		
		Scanner scanner = new Scanner(System.in);
		
		int month = scanner.nextInt();
		
		switch(month) {
			case 3: case 4: case 5:
				System.out.println("현재의 계절은 봄입니다.");
				break;
			case 6: case 7: case 8:
				System.out.println("현재의 계절은 여름입니다.");
				break;
			case 9: case 10: case 11:
				System.out.println("현재의 계절은 가을입니다.");
				break;
			case 12: case 1: case 2:
				System.out.println("현재의 계절은 겨울입니다.");
				break;
			
		}
	}

}

현재 월을 입력하세요.>6 현재의 계절은 여름입니다.

 

package chap04;
import java.util.*;
public class FlowEx7 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("가위(1), 바위(2),보(3) 중 하나를 입력하세요.>");
		
		Scanner scanner = new Scanner(System.in);
		int user = scanner .nextInt();
		int com = (int)(Math.random()*3)+1;
		
		System.out.println("당신은 "+ user +"입니다.");
		System.out.println("컴은 "+ com +"입니다.");
		
		switch(user-com) {
			case 2: case -1:
				System.out.println("당신이 졌습니다.");
				break;
			case 1: case -2:
				System.out.println("당신이 이겼니다.");
				break;
			case 0:
				System.out.println("비겼습니다.");
				break;
		}
	}

}

가위(1), 바위(2),보(3) 중 하나를 입력하세요.>3 당신은 3입니다. 컴은 2입니다. 당신이 이겼니다.

 

package chap04;

import java.util.*;
public class FlowEx8 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("당신의 주민번호를 입력하세요. (011231-1111222)>");
		
		Scanner scanner = new Scanner(System.in);
		
		String regNo = scanner.nextLine();
		
		char gender = regNo.charAt(7);
		
		switch(gender) {
			case '1': case '3':
				System.out.println("당신은 남자입니다.");
				break;
			case '2': case '4':
				System.out.println("당신은 여자입니다.");
				break;
			default:
				System.out.println("유효하지 않은 주민등록번호입니다.");
		}
		
	}

}

당신의 주민번호를 입력하세요. (011231-1111222)>123455-1231231 당신은 남자입니다.

2. 반복문 - for, while, do-while

for(초기 변수, 변수 조건, 변수 증감폭)

 

package chap04;

public class FlowEx16 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i =1; i<=5; i++) {
			for (int j =1; j<=10; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

}

/*
**********
**********
**********
**********
**********
*/

 

package chap04;

public class FlowEx21 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int i=1; i<=5; i++) {
			for(int j =1; j<=5; j++) {
				if (i==j) {
					System.out.printf("[%d,%d]",i,j);
				} else {
					System.out.printf("%5c",' ');
				}
			}
			System.out.println();
		}
	}

}

[1,1]                    
     [2,2]               
          [3,3]          
               [4,4]     
                    [5,5]

 

향상된 for문

for (타입 변수명 : 배열 또는 컬렉션) {

}

 

 

for(int i=0; i < arr.length; i++){
	System.out.println(arr[i]);
}

for (타입 변수명 : 배열 또는 컬렉션){
	//반복할 문장
}


for(int tmp : arr) {
	System.out.println(tmp);
}

 

package chap04;

public class FlowEx22 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {10,20,30,40,50};
		
		int sum = 0;
		
		for (int i =0; i< arr.length;i++)
			System.out.printf("%d ", arr[i]);
		System.out.println();
		
		for(int tmp : arr) {
			System.out.printf("%d ", tmp);
			sum += tmp;
		}
		System.out.println();
		System.out.println("sum="+sum);
	}

}

10 20 30 40 50 
10 20 30 40 50 
sum=150

 

2.2 while 문

 

while(조건식) {
	// 조건식의 연산결과가 참인 동안, 반복될 문장들을 적는다.
}

for(;;){}

<->
while(true){}
package chap04;

public class FlowEx23 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 5;
		
		while(i--!=0) { //for 루프 아니어도 가능하다!! 
			System.out.println(i +" - I can do it.");
		}
	}

}

4 - I can do it.
3 - I can do it.
2 - I can do it.
1 - I can do it.
0 - I can do it.

 

package chap04;

import java.util.Scanner;

public class FlowEx25 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num = 0, sum = 0;
		System.out.print("숫자를 입력하세요. (예:12345)>");
		Scanner scanner = new Scanner (System.in);
		String tmp = scanner.nextLine();
		num = Integer.parseInt(tmp);
		
		while(num!=0) {
			sum+=num%10;
			System.out.printf("sum=%3d num %d%n", sum,num);
			num /=10;
			
		}
		System.out.println("각 자리수의 합:"+sum);
	}
	

}

숫자를 입력하세요. (예:12345)>34515254
sum=  4 num 34515254
sum=  9 num 3451525
sum= 11 num 345152
sum= 16 num 34515
sum= 17 num 3451
sum= 22 num 345
sum= 26 num 34
sum= 29 num 3
각 자리수의 합:29

 

package chap04;

public class FloweEx26 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum = 0;
		int i =0;
				
		while((sum += ++i)<=100) {
			System.out.printf("%d - %d%n",i,sum);
		}
	}

}

1 - 1
2 - 3
3 - 6
4 - 10
5 - 15
6 - 21
7 - 28
8 - 36
9 - 45
10 - 55
11 - 66
12 - 78
13 - 91

do - while 문

while문은 조건식의 결과에 따라 블럭이 수행되지 않을 수도 있지만, do -while 문은 최소한 한번은 수행될 것을 보장한다.

do{ } while(조건식);

3. 이름 붙은 반복문

break 문은 근접한 단 하나의 반복문만 벗어날 수 있기 때문에, 여러 개의 반복문이 중첩된 경우에는 break문으로 중첩 반복문을 완전히 벗어날 수 없다. 중첩 반복문 앞에 이름을 붙이고, break문과 continue문에 이름을 지정해 줌으로써 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.

 

package chap04;

public class FlowEx33 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Loop1 : for(int i=2; i <=9; i++ ) {
			for (int j=1; j <=9; j++) {
				if(j==2)
					//break Loop1;
					break;
					//continue Loop1;
					//continue;
				System.out.println(i+"*"+j+"="+i*j);
			}
			System.out.println();
		}
	}

}

2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9

반응형

'Develope_Web&amp;App > 01_Java &amp; JavaFX' 카테고리의 다른 글

[java] string 변환시키기  (0) 2021.01.27
[java] 예외처리  (0) 2021.01.27
[Java] 03 연산자(Operator)  (0) 2021.01.26
[Java] chap 02. 변수  (0) 2021.01.26
객체지향 디자인패턴2  (0) 2020.12.26