Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

스포츠마케터의 초보 개발자 도전기

JAVA study 05 본문

develop/JAVA

JAVA study 05

teammate brothers 2024. 3. 5. 11:02

while, do-while, continue, break, label 활용

1.while

package ex1_while;

public class Ex1_while {
	
	public static void main(String[] args) {
		
		//while문 : 간편한 구성을 가진 반복문 (선비교, 후처리)
		
		/*while (조건식) {
		  조건식이 참일때 실행되는 영역
		}*/
		
		int num = 1;
		
		while (num <= 5) {
			
			System.out.println(num);
			num++;
			
		}//while
				
		
	}//main

}

 

1-1. while-break

package ex1_while;

public class Ex2_while_break {
	public static void main(String[] args) {
		
		int n = 1;
		
		while (true) {
		
			System.out.println(n);
			n++;
			
			if(n > 5) {
				break; //while문을 빠져나온다.
			}
			
		}//while
		System.out.println("프로그램 종료");

	}//main
}

 

1-2. do-while

package ex1_while;

import java.util.Random;

public class Ex3_do_while {
	public static void main(String[] args) {

		// do-while문 : 선처리, 후비교

		/* do {
		 조건식이 참일때 실행되는 영역 
		 }while(조건식); */

		int i = 5;
		do {
			
			System.out.println(i);
			i++;
			
		} while (i <= 10);

		
		System.out.println("------------------------");
		
		//int a = new Random().nextInt(5 - 0 + 1) + 0;  //Random 코드 0~5까지 숫자 중 하나, 시작수는 0
		
		/* 예제) java, jsp, html의 시험을 봤다.
		   각 과목별 점수는 랜덤으로 0 ~ 130까지의 값이 대입
		   
		   각 과목의 점수를 검사하는데, 100점이 넘어 결과가 나오지 않을때까지 반복문을 수행하고
		   
		   최종적으로 세 과목이 모두 100이하가 되었을 때 과목별 점수를 출력
		
		 예시 결과
		 java : 100
		 jsp : 82
		 html : 90
		 */
		
		int java = 0;
		int jsp = 0;
		int html = 0;
		
		
		do {
			
			java = new Random().nextInt(130 - 0 + 1) + 0; //Random ->  new Random().nextInt(난수의 범위) + 시작수;
			jsp = new Random().nextInt(130 - 0 + 1) + 0;
			html = new Random().nextInt(130 - 0 + 1) + 0;
			
									
		} while (java > 100 || jsp > 100 || html > 100);
		
		System.out.println("java " + java);
		System.out.println("jsp " + jsp);
		System.out.println("html " + html);
		
		System.out.println("====================================");
		
//예제의 경우 while 문으로 하면, 난수를 따로 정의하고 밑에 해야함 (코드 길어짐)
		
		int java1 = new Random().nextInt(130 - 0 + 1) + 0;
		int jsp1 = new Random().nextInt(130 - 0 + 1) + 0;
		int html1 = new Random().nextInt(130 - 0 + 1) + 0;
		
		
		while (java1 > 100 || jsp1 > 100 || html1 > 100) {
			
			java1 = new Random().nextInt(130 - 0 + 1) + 0;
			jsp1 = new Random().nextInt(130 - 0 + 1) + 0;
			html1 = new Random().nextInt(130 - 0 + 1) + 0;
			
		}
		
		System.out.println("java1 " + java);
		System.out.println("jsp1 " + jsp);
		System.out.println("html1 " + html);
		

		
	}// main
}

 

2. continue 활용

package ex2_continue;

public class Ex1_continue {
	public static void main(String[] args) {

		//continue문 : 반복문 내에서 특정 코드를 건너뛰고자 할 때
		
		for(int i = 1; i <= 2; i++) {
			
			for(int j = 1; j <= 5; j++) {
				if( j % 2 == 0 ) {
					continue; //바로 밑은 어떤 코드도 추가할 수 없음. continue 특징: 1) 가장 가까운 반복문이 for문이라면 아래코드인 System.out.ptint 하지않고 증감식으로 건너뛴다
				}
				
				System.out.print( j + " ");
			}//inner
		
			System.out.println();
			
		}//outer
		
		
		System.out.println("-----------------------------");
		
		for(int i = 1; i <= 2; i++) {
			for(int j = 1; j <= 5; ) {
				j++;
				
				if ( j % 2 ==0 ) {
					continue; //continue 특징: 2) 가장 가까운 반복문이 for문이라면 아래코드인 System.out.ptint 하지않고 증감식으로 건너뛰는데, 증감식이 없다면 조건문으로 건너뛴다
				}
				
				System.out.print(j + " ");
			}//inner
			System.out.println();
		}//outer
		
		System.out.println("-----------------------------");

		for (int i = 1; i <= 5; i++) {
			//switch문이 반복문 내부에 있으면 break;대신 continue;를 사용하는 것이 가능하다.
			switch(i) {
			case 2:
				continue; 
			case 4:
				continue;
			
			}//switch
			System.out.println(i);
		}//for
		
		System.out.println("-----------------------------");

		int n = 0;
		
		while(n < 5) {
			n++;
			
			if (n % 2 ==0) {
				continue; //continue 특징: 3) while문 안에서는 증감식이 따로 없어 바로 조건식으로 건너뛴다.
			}
			
			System.out.println(n);
			
		}//while
		
		
		
	}// main
}

 

3. label 활용

package ex3_label;

public class Ex1_label_break {
	public static void main(String[] args) {
		
		
		//label : 가장 가까운 반복문만을 break, continue와 달리
		//특정 반복문에 이름을 붙여서 한번에 두개 이상의 반복문을 제어할 수 있도록 하는 기능 (이름 붙인 반복문 전체 제어)
		
		out : for(int i = 1; i <=3; i ++) {

			for(int j = 1; j <=5; j++) {
				
				if(j % 2 == 0) {
					break out;
				}
				System.out.print(j + " ");
			}//inner
			
			System.out.println();
			
		}//outer
		System.out.println("끝");
		
		System.out.println("--------------------------------------");
		
		lab : for(int i = 0; i <= 3; i++) {
			
			for(int j = 1; j <= 5; j++) {
				//switch가 label을 호출하면, 해당 반복문을 빠져나갈 수 있다
				switch(j) {
				
				case 1 :
					System.out.println("나는 1");
					break lab;
					
				case 2 :
					System.out.println("나는 2");
					break;
				
				
				}//switch
				
			}//inner
			
		}//outer
		
	}//main
}
package ex3_label;

public class Ex2_label_continue {
	public static void main(String[] args) {
		
		o : for(int i = 1; i <= 2; i++) {
			
			for(int j = 1; j <= 5; j++ ) {
				
				if(j % 2 ==0) {
					continue o;
				}
				System.out.print(j+ " ");

			}//inner
			
			System.out.println();
			
		}//outer
		
	}//main
}
package ex3_label;

import java.util.Random;

public class Ex3_label_work {
	public static void main(String[] args) {
		
		//주사위 두개를 던졌을 때, 합이 7이되는 첫번째 경우의 수를 출력하시오.
		//-------------
		//for, label, break 사용
		//결과 : 1, 6
				
		sum: for(int i = 1; i <= 6; i++) { 
				for(int j = 1; j <= 6; j++) {
				
					if (i + j == 7) {
						System.out.printf("결과 : %d, %d", i, j);
					break sum;
				}//if
												
			}//inner
		}//outer
		System.out.println();
		
		System.out.println("-------------------------------");
		//random 사용		
		
		int num1 = 0;
		int num2 = 0;
		
		do {
			num1 = new Random().nextInt(7 - 0 + 1) + 1;
			num2 = new Random().nextInt(7 - 0 + 1) + 1;
		} while(num1 + num2 != 7);
		
		System.out.println(num1);
		System.out.println(num2);
		
	}//main
}

 

예제1) 최소공배수 구하기

package ex4_work;

import java.util.Scanner;

public class Ex1_workl {
	public static void main(String[] args) {
		
		//키보드에서 정수 두개를 입력받아
		//입력 받은 두 수의 최소 공배수를 출력
		//예를 들어 2,5를 입력받았다면 10을 출력
		// 3,3을 받았다면 3을 출력
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수 1개를 입력하세요.\n");
		int num1 = sc.nextInt();
		
		System.out.println("정수를 추가로 1개 더 입력하세요.\n");
		int num2 = sc.nextInt();				
		
		
		for (int i = 1; i <= num1 * num2; i++) {
				
			if (i % num1 == 0 && i % num2 == 0) {
				System.out.printf("최소공배수 : %d", i);
				break;
			}

							
			
		}//for
		
		
	}//main
}

 

예제2) 최대공약수 구하기

package ex4_work;

import java.util.Scanner;

public class Ex2_work {
	public static void main(String[] args) {
		
		//키보드에서 입력받은 두 수의 최대공약수를 구하시오
		
		Scanner sc = new Scanner(System.in);
				
		System.out.println("첫번째 정수를 입력하세요");
		int n1 = sc.nextInt();
		
		System.out.println("두번째 정수를 입력하세요.");
		int n2 = sc.nextInt();
		
		//↓ 반드시 n1 이 n2보다 작도록 스왑 SWAP
		if (n1 > n2) {
			int n3 = n1;
			n1 = n2;
			n2 = n3;
		}
		
		for(int i = 2; i <= n1; i++) {
			
			if(n1 % i == 0 && n2 % i == 0) {
				System.out.println(i);
				break;
		
			}else {
				System.out.println("최대공약수가 없습니다.");
			
		}
			
			
		}//for
		
		System.out.println("======================");
		//teacher code
		int i1 = 0;
		
		for( i1 = n1; i1 >= 1; i1--) {
			
			if(n1 % i1 == 0 && n2 % i1 == 0) {
				break;
			}
		}//for
		
		if(i1 == 1) {
			System.out.println("최대공약수가 없습니다.");
		}else {
			System.out.println("최대공약수 : " + i1);
		}
			
	}//main
}

 

과제1) 입력된 정수가 소수인지 판단

package ex4_work;

import java.util.Scanner;

public class Ex3_work {
	public static void main(String[] args) {

		// 키보드에서 정수를 입력받고 그 숫자가 소수인지를 판단하시오

		Scanner sc = new Scanner(System.in);
		System.out.print("수 입력 : ");
		int num = sc.nextInt();

		int i = 0;
		for (i = num; i <= num; i--) {

			if (num % i == 0 && num != i) {
				break;
			} // if
		} // for
		if (i == 1) {
			System.out.println(num + "는 소수입니다.");
		} else {
			System.out.println(num + "는 소수가 아닙니다.");
		}

		// teacher code
		System.out.println("입력 : ");

		int n = sc.nextInt();

		int i1 = 0;
		for (i1 = 2; i1 <= n; i1++) {
			if (n % i1 == 0) {
				break;
			} // if
		} // for
		if (i1 == n) {
			System.out.println(n + "는 소수입니다.");
		} else {
			System.out.println(n + "는 소수가 아닙니다.");
		}

	}// main
}

 

과제2) 숫자 야구게임 만들기

package ex4_work;

import java.util.Random;
import java.util.Scanner;

public class Ex4_baseball {
	public static void main(String[] args) {
		
//1~9사이의 중복되지 않는 난수 3개를 알아맞히는 숫자야구 게임 제작하기

		int com1 = 0;
		int com2 = 0;
		int com3 = 0;

		do {

			com1 = new Random().nextInt(9 - 1 + 1) + 1;
			com2 = new Random().nextInt(9 - 1 + 1) + 1;
			com3 = new Random().nextInt(9 - 1 + 1) + 1;
		} while (com1 == com2 || com2 == com3 || com3 == com1);

		// System.out.printf("%d, %d, %d\n", com1, com2, com3); // -> 컴퓨터가 생각한 수 (for
		// test)

		System.out.println("====맞춰봅시다====");

		Scanner sc = new Scanner(System.in);

		int S = 0;
		int B = 0;
		int count = 0;

		while (true) {

			System.out.println("1~9까지 숫자3개를 입력 : ");
			int user1 = sc.nextInt();
			int user2 = sc.nextInt();
			int user3 = sc.nextInt();

			count++;

			if (com1 == user1) {
				S++;
			}

			if (com2 == user2) {
				S++;
			}
			if (com3 == user3) {
				S++;
			}

			if (com1 == user2 || com1 == user3) {
				B++;
			}
			if (com2 == user3 || com2 == user1) {
				B++;
			}
			if (com3 == user1 || com3 == user2) {
				B++;
			}

			if (S == 3) {
				System.out.println("정답입니다.");
				System.out.println(count + "번만에 정답");
				break;
			} else {
				if (S == 0 && B == 0) {
					System.out.println("아웃. 하나도 맞는 수가 없네요");
				} else {
					System.out.printf("%d S, %d B\n", S, B);
				}

				S = 0;
				B = 0;

			}
		} // while

		// teacher code
		int c1 = 0;
		int c2 = 0;
		int c3 = 0;

		int u1 = 0;
		int u2 = 0;
		int u3 = 0;

		do {

			c1 = new Random().nextInt(9) + 1;
			c2 = new Random().nextInt(9) + 1;
			c3 = new Random().nextInt(9) + 1;
			
		} while (c1 == c2 || c2 == c3 || c3 == c1);

		System.out.println("" + c1 + c2 + c3); // 컴퓨터 난수 확인

		while (true) {
			System.out.println("백 : ");
			u1 = sc.nextInt();

			System.out.println("십 : ");
			u2 = sc.nextInt();

			System.out.println("일 : ");
			u3 = sc.nextInt();

			int strike = 0;
			int ball = 0;

			// 경우의 수 판단
			if (c1 == u1) {
				strike++;
			} else if (c1 == u2 || c1 == u3) {
				ball++;
			}

			if (c2 == u2) {
				strike++;
			} else if (c2 == u3 || c2 == u1) {
				ball++;
			}

			if (c3 == u3) {
				strike++;
			} else if (c3 == u2 || c3 == u1) {
				ball++;
			}
			
			//정답 & 오답처리
			if (strike == 3) {
				System.out.println("정답-" + u1 + u2 + u3);
				break;
			}else {
				if(strike > 0 || ball > 0) {
					System.out.println(strike + "S," + ball + "B");
				}else {
					System.out.println("out!");
				}
			}
			System.out.println("--------------------------------");

		} // while

	}//main
}

'develop > JAVA' 카테고리의 다른 글

JAVA study 07  (0) 2024.03.06
JAVA study 06  (0) 2024.03.05
JAVA study 04  (0) 2024.03.05
JAVA study 03  (1) 2024.03.05
JAVA study 02  (0) 2024.03.05