ControlStatement(제어문)

JK·2022년 12월 15일
0

JAVA

목록 보기
5/28
post-thumbnail

조건문

1. if

if(조건식1) {
		조건식1이 참일 때 실행할 명령문;
	}else if(조건식2){
		조건식1이 거짓이고 조건식2가 참일 때 실행할 명령문;
	}else{
		위의 조건식 둘 다 참이 아닐 때 실행할 명령문;
}
public static void main(String[] args) {
		int score = 65;
		if(score>= 90) {
			System.out.println("잘 했습니다");
		}else if(score>=70){
			System.out.println("조금 아쉽네요");
		}else if(score>= 60){
			System.out.println("분발하세요");
		}else {
			System.out.println("재시험입니다");
		}//if
		System.out.println("DONE");
	}

2. switch

  • break; 를 해주지 않으면 조건이 만족해도 다음 일을 처리해버린다.
switch(정수형 또는 문자형 변수(or문자열)){
		case 변수값1 : 위의 변수가 변수값1일 때 처리할 명령문; break;

		case 변수값2 : 위의 변수가 변수값1일 때 처리할 명령문; break;
		∙ ∙ ∙ ∙ ∙ ∙
		default : 위의 변수값들이 아닐 때 처리할 명령문; break;
	public static void main(String[] args) {
		int num = 3;         //Switch () 괄호 안에는 정수형, 문자형, 문자열만 가능
		switch(num){
			case 1:
				System.out.println("주사위 1");break;
			case 2:
				System.out.println("주사위 2");break;
			case 3:
				System.out.println("주사위 3");break;
			case 4:
				System.out.println("주사위 4");break;
			case 5:
				System.out.println("주사위 5");break;
			default :
				System.out.println("주사위 6");break;
		}
  • 결과
주사위 3

반복문

반복문이란

  • 반복적으로 수행하도록 하는 동작.
    조건을 잘못 걸면 무한 loop가 될 수도 있다.

for문

  • 미리 설정된 횟수만큼 반복적으로 수행.
for( ①초기값 ; ②반복할조건 ; ④증감식){
		③ 반복할 명령문들;
	}

1. 숫자 반복 출력

public static void main(String[] args) {
		for(int i=0 ; i<5 ; i++) {
			System.out.println(i + ", 안녕하세요");
		}
	}
  • 결과
0, 안녕하세요
1, 안녕하세요
2, 안녕하세요
3, 안녕하세요
4, 안녕하세요

2. 별 출력

  • for(int i=1 ; i<=5 ; i++) 5번 반복하라는 for 문
  • for(int j=1 ; j<=i; j++) System.out.print('*');
    for문 안에 for문을 이용하여 * 을 반복적으로 출력되게 만들기
public static void main(String[] args) {
		for(int i=1 ; i<=5 ; i++) {
			for(int j=1 ; j<=i; j++) {
				System.out.print('*');
			}//for-j
				System.out.println();   //개행만 하는 역할
		}//for-i
	}//main

3. while

public static void main(String[] args) {
		int i=10;
		while(i>0) {    //i가 0보다 클 때
			System.out.println(i+".");    //i + . 을 출력하라
			i--;      //무한 루프 방지  증가할 땐 ++ 감소할 땐 --
		}

4. break; continue;

break는 if(i==3) 이라는 조건이 만족되면 for문을 멈추고 빠져나간다
comtinue는 if(i==3) 의 조건만 제외시키고 다시 증감식으로 올라간다

public static void main(String[] args) {
		for(int i=1 ; i<=5 ; i++) {
			if(i==3)
//				 break;  
//				continue;  
			System.out.println(i);
		}
	}
break의 결과continue의 결과
11
22
4
5

5. 컴퓨터가 발생하는 로또 번호(난수) 맞추기

public static void main(String[] args) {
		int lotto, su;  //컴퓨터 로또 번호와 사용자로부터 입력받은 수
		int min=1, max=45;   //최솟값 최대값 
		Scanner sc = new Scanner(System.in);
		lotto = (int)(Math.random()*45+1);   //로또번호 난수 발생
		do {
			System.out.printf("로또 번호 한 개를 맞춰보세요(%d~%d) : ", min, max);
			su = sc.nextInt();       //로또 번호를 맞추는 입력칸
			if(su < min || su>max) {
				System.out.println("주어진 범위를 참조하세요");         //범위 밖의 수를 입력 시
			}else if(su>lotto) {           
				max = su-1;                //입력한 값의 1 작은 수의 범위 알려주기
				System.out.println("입력한 수보다 작습니다");
			} else if(su<lotto) {
				min = su+1;      //입력한 값의 1 큰 수의 범위 알려주기
				System.out.println("입력한 수보다 큽니다");
			}
		}while(su != lotto);                //su 가 lotto 와 다르면 다시 하여라
		System.out.println("맞추혔습니다");
		sc.close();
	}
  • 결과
로또 번호 한 개를 맞춰보세요(1~45) : 25
입력한 수보다 작습니다
로또 번호 한 개를 맞춰보세요(1~24) : 10
입력한 수보다 작습니다
로또 번호 한 개를 맞춰보세요(1~9) : 15   //범위를 벗어날 시 다시 입력하게 만들었다
주어진 범위를 참조하세요
로또 번호 한 개를 맞춰보세요(1~9) : 5
입력한 수보다 큽니다
로또 번호 한 개를 맞춰보세요(6~9) : 8
입력한 수보다 작습니다
로또 번호 한 개를 맞춰보세요(6~7) : 7
입력한 수보다 작습니다
로또 번호 한 개를 맞춰보세요(6~6) : 6
맞추혔습니다

Ex01. 월 입력받아 계절 출력하기

  • switch를 이용하여 계절 별 월을 case로 입력해주었다.
public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("현재 월을 입력하세요 : ");
		int month = sc.nextInt();
		switch(month){
		case 12: case 1: case 2:
			System.out.println("입력하신 개월은 겨울이네요");break;
		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;
		default:
			System.out.println("유효한 개월 수가 아닙니다");
		}
    }
  • 결과
현재 월을 입력하세요 : 11
입력하신 개월은 가을이네요

Ex02. 가위바위보 게임

  • 컴퓨터와 가위바위보 게임을 당신이 질 때까지 무한반복하는 게임
    (가위=0, 바위=1, 보=2)
  • do while을 이용하여 질 때까지 반복되도록 하였다
    while((u+2)%3 == com || u==com)
  • 0 1 2가 아닌 수를 입력하면 다시 입력하게 하였다
if(u<-1 || u>2) {
	System.out.println("잘못 입력했습니다");
}     
  • Math.random() 으로 컴퓨터가 랜덤한 가위바위보를 내도록 만듬
    com = (int)(Math.random()*3);
public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int u, com;
		do {
			System.out.print("가위(0)바위(1)보(2)중 하나를 입력하세요 : ");
			u = sc.nextInt();
			com = (int)(Math.random()*3);
			String comStr = (com==0) ? "가위" : (com==1)?"바위":"보자기"; 
			String uStr = (u==0) ? "가위" : (u==1)?"바위":"보자기"; 
			if(u<-1 || u>2) {
				System.out.println("잘못 입력했습니다");
			}else {
				if( (u+2)%3 == com ) {
					System.out.printf("당신은 %s, 컴퓨터는 %s. 당신이 이겼어요 ^.^\n", uStr, comStr);
				}else if((u+1)%3 == com){
					System.out.printf("당신은 %s, 컴퓨터는 %s. 컴퓨터가 이겼어요 ㅠ.ㅠ\n", uStr, comStr);
				}else {
					System.out.printf("당신은 %s, 컴퓨터는 %s. 비겼어요\n",  uStr, comStr);
				}
			}
		}while((u+2)%3 == com || u==com);	//만약  u 가 1바위 이라면   가위 == com  ||   바위== com
		sc.close();
		System.out.println("end");
	}
  • 결과
가위(0)바위(1)보(2)중 하나를 입력하세요 : 3
잘못 입력했습니다
가위(0)바위(1)보(2)중 하나를 입력하세요 : 0
당신은 가위, 컴퓨터는 가위. 비겼어요
가위(0)바위(1)보(2)중 하나를 입력하세요 : 0
당신은 가위, 컴퓨터는 바위. 컴퓨터가 이겼어요 ㅠ.ㅠ
end
profile
씨앗 개발자

0개의 댓글