국비/Java

[06-1] Java - 탈출문 (break, continue)

박머루 2022. 4. 14. 22:15
❗break;
* 탈출문 break; : break문을 만나는 순간 "가장 가까운 반복문"을 빠져나간다.
* 해당 break문이 속해 있는 반복문 딱 "한 겹"만 빠져나감!!!!!!!!!!!!!!!

* 주의할 점 : switch문 안에 break;와 다른 개념
* switch문 내부에 존재하는 break는 해당 switch문을 빠져나가는 용도일 뿐이다@!

public void method1() { // 메소드1
		// 매번 반복적으로 새롭게 발생되는 랜덤값 출력 (1~100) => 무한하게
		// 그 랜덤 값이 홀수일 경우 반복문을 빠져나가게 할 것!!
		
		// 1. for(;;) >> 무한하게 돌아갈 때 초기식 조건식 증감식 안 씀
		// 2. while(true) >> true일 때 무한하게 돌아감
		
		for(;;) {
			int random = (int)(Math.random() * 100) + 1;
			
			if(random % 2 == 1) {
				System.out.println("반복문 탈출!");
				break;
			} else {
				System.out.println(random);
			}
		}// for문 끝 >> break; 여기로 옴	
	}// 메소드1 끝
public void method2() { // 메소드2시작
		
		// 사용자에게 문자열을 입력 받은 후
		// 해당 문자열의 길이를 출력하자
		// 단, 사용자가 "exit"을 입력할 경우 반복문을 빠져나가게 함
		
		Scanner sc = new Scanner(System.in); // 반복문 바깥에 있는게 좋음
		
		while(true) { //무한반복
			
			System.out.println("문자열을 입력해주세요.");
			String str = sc.nextLine();
			
			// 문자열은 참조자료형, 동등비교 불가!!
			if(str.equals("exit")) {//if 시작
				System.out.println("프로그램이 종료됩니다.");
				break;
			}//if 끝
			
			System.out.println(str.length()); // 문자의 길이(int)를 반환하는 메소드
		}//while끝
	} //메소드 끝​
/*
	 * 연산자와 정수 두 개를 입력받아 입력된 연산자에 따라 알맞은 결과를 출력하세요.
	 * 단. 해당 프로그램은 연산자 입력에 "exit"이라는 값이 들어올 때까지 무한 반복하며
	 * "exit"이 들어오면 "프로그램을 종료합니다"라고 출력하고 종료합니다.
	 * 
	 * 또한, 연산자가 나누기이면서 두 번째 정수가 0으로 들어오면
	 * "0으로는 나눌 수 없습니다. 다시 입력해주세요"를 출력하고,
	 * 없는 연산자를 입력 시 "없는 연산자입니다. 다시 입력해주세요." 라고 출력하고
	 * 두 경우 모두 처음으로 돌아가 사용자가 다시 정수부터 입력하도록 하세요.
	 */
	
	public void method4() {//method4 시작
		
		Scanner sc = new Scanner(System.in);
		
		while(true) {//while시작
			
			System.out.println("연산자를 입력해주세요 \n종료를 원하면 \"exit\"를 입력해주세요");
			String op = sc.next();
			
			if(op.equals("exit")) {
				System.out.println("프로그램을 종료합니다.");
				return;
				}
			
			System.out.println("\n정수1 : ");
			int num1 = sc.nextInt();
			
			System.out.println("정수2 : ");
			int num2 = sc.nextInt();
			
			int result = 0;
			boolean flag = true;
			
				switch(op) {
				case "+" : result = num1 + num2;
				break;
				case "-" : result = num1 - num2;
				break;
				case "*" : result = num1 * num2;
				break;
				case "/" : 
					if(num2 == 0) {
						System.out.println("0으로는 나눌 수 없습니다.");
						flag = false;
					} else {
						result = num1 / num2;
					}
					break;
				case "%" : result = num1 % num2;
				break;
				
				default : System.out.println("없는 연산자입니다. 다시 입력해주세요.");
				flag = false;
				} //switch 끝
				
				if(flag) {
				System.out.printf("%d %s %d = %d\n", num1, op, num2, result);
				}
		}//while끝
		
		
	} //method4끝


❗continue : 반복문 안에서 쓰이는 구문!
* continue를 만나면 그 뒤에 어떤 구문이 있든간에 실행하지 않고 pass
* 가장 가까운 반복문으로 올라가는 것을 의미함
public void method3(){ //메소드3
		
		// 5칸짜리 정수 배열을 만들고 숫자 입력받기
		// int[] arr = new int[5];
		// 1~100까지 숫자만 입력받기
		// 만약, 범위를 넘어선 숫자를 입력받는다면 "다시 입력하세요!!" 출력 후 다시 입력받자 
		// 
		
		int[] arr = new int[5]; // arr=식별자, int형 배열
		Scanner sc = new Scanner(System.in);
		
		for(int i = 0; i < arr.length; i++) {//for 시작
			System.out.println("숫자 입력(1~100)");
			int temp = sc.nextInt();
			
			if(!(1 <= temp && temp <= 100)) {
				System.out.println("다시  입력해주세요");
				i--; // 감소하고
				continue; // for문으로 돌아가 다시 증가
			}
			arr[i] = temp;
			
		}//for 끝
		System.out.println(Arrays.toString(arr));
	} //메소드3끝

'국비 > Java' 카테고리의 다른 글

[07-1] Java - 배열, 배열복사  (0) 2022.04.15
[06-2] Java - 배열(Array)  (0) 2022.04.14
[05-2] 과제  (0) 2022.04.13
[05-1] Java - 반복문 (for, while, do-while)  (0) 2022.04.13
[04-2] 과제  (0) 2022.04.12