-
반복문(while문), break문, continue문개발/자바JAVA 2024. 1. 23. 15:48
▶While 문
> 반복 횟수를 정확히 알 수 없을때 사용. (물론 알때도 사용가능.)
> [표현법]
>조건식의 결과가 true일 경우 중괄호 안의 구문을 "반복적" 으로 실행함.
조건식을 충족할 때 까지 반복된다.
> while문은 조건식이 끝나고도 최종값을 확인할 수 있다.
연습문제
1~100까지 랜덤값을 받아 1부터 랜던값 까지의 합계
public void method1() { Scanner sc = new Scanner(System.in); int randomNum = (int) (Math.random() * 100); int i=1; int sum=0; System.out.println(randomNum); while (i <= randomNum) { sum+=i; i++; } System.out.println(sum); } }
▶while문 무한 반복
public void method2() { while(true) { System.out.println("ㅎㅇㅎㅇㅎㅇㅎㅇㅎㅇ"); } }
조건식에 true를 넣으면 무한반복 된다.
> 무한 반복을 돌리려면 for문 보다는 while문을 더 많이 쓴다.
무한 반복 종료
public void method3() { Scanner sc = new Scanner(System.in); while(true) { System.out.println("프로그램을 종료하시겠습니까?"); String answer = sc.nextLine(); if(answer.equals("y")||answer.equals("Y")) { System.out.println("종료되었습니다."); return; } } }
y가 나올때 까지 반복되다가. y를 입력받으면 종료되는것을 볼 수 있다.
▶Do-While문
>do 안의 내용 먼저 " 한번 " 실행.
-->조건식 확인 후 true면 문장 수행, false면 종료,
-->while 뒤에 ; 꼭 필요함.
(즉, do-while문은 조건 검사 결과에 상관 없이 무조건 맨 처음에는 1번 실행함)
>반복 횟수가 내가 의도한 것 보다 한번 더 돈다. -> 그래서 굳이 잘 안쓰임!!
while 문 : 처음 수행할 때도 조건검사 후에 반복이 진행.
do-while문 : 처음 수행할 때는 조건검사 없이 일단 실행 후 반복이 진행(반복횟수 +1)
public void method4() { int num =1; do { System.out.println("안녕"); }while(num==0); } }
일단 한번 실행되고,
조건문이 0 이기 때문에(false) 종료됨.
일단 한번은 실행되는게 중요
do - while문으로
1~5까지 돌려보자
public void method8() { int i =1; do { System.out.println(i); i++; }while(i<=5); } }
돌려봤다.
▶break문
>switch문에서의 break; 와는 전혀 다른개념임!! (쓰임새가 전혀 다름)
> 기존 switch문에서의 break; 는 switch(조건문)를 빠져나가는 역할을 했다.
> 분기문으로써의 break; 는 "가장 가까운 "반복문" 을 빠져나가는 역할을 한다.
>이런식으로 쓰인다.
※자동 import : ctrl + shift + o
return 과 break 차이.
public class A_break { public void method1() { Scanner sc = new Scanner(System.in); while(true) { System.out.println("프로그램을 종료하시겠습니까?"); String answer = sc.nextLine(); if(answer.equals("y")) { break; // while문만 빠져나감 //return; : method1을 빠져나가서 main으로 돌아감. } } System.out.println("출력"); //return구문을 썻을 경우 이 시점으로 절 대 올 수 없음. } }
//매번 반복적으로 새로 발생되는 랜던값(1~100)출력 //단, 그 랜덤값이 홀수일 경우 반복문을 빠져나감. int random = (int)((Math.random()*100)); System.out.println("random : " + random); while(random % 2 ==1) { break; } System.out.println("반복문 종료"); }
사용자에게 양수를 입력받아 1~ 사용자가 입력한 수 까지 출력
public void method3() { //매번 반복적으로 사용자에게 양수를 입력받아 1~ 사용자가 입력한 수 까지 출력 Scanner sc = new Scanner(System.in); while(true) { System.out.println("양수 입력 : "); int num = sc.nextInt(); sc.nextLine(); if(num>0) { //case1) 제대로된 양수를 입력한 경우 > 출력 후 반복문을 빠져나가기(break) for(int i=1; i<=num; i++) { System.out.println(i+ " "); } }else { //case2) 잘못 입력했을경우 >while(true) 로 그대로 다시 입력받도록 올라가게끔 } }
문자열의 길이 출력
public void method4() { //매번 사용자에게 문자열을 입력받은 후 해당 문자열의 길이 출력. //단, 사용자가 "exit" 를 입력했을 경우에는 프로그램 종료 Scanner sc = new Scanner(System.in); while(true) { System.out.print("문자열 입력 : "); String str = sc.nextLine(); System.out.println(str + " 의 글자수 길이 : " + str.length()); System.out.println(); if(str.equals("exit")) { break; } } System.out.println("종료"); } }
▶Continue문
> "반복문" 안에서 사용하는 구문.
> continue; 를 만나는 순간 그 뒤에 어느 구문이 있던지 간에 실행하지 않고 " 가장 가까운 상단 " 으로 올라감.
> 반복문 내에서만 사용 가능하며
반복문 실행시 continue 아래 부분은 실행하지 않고 반복문 다시 실행함.
for 문의 경우 증감식으로 이동, while문의 경우 조건식으로 이동
--> 전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.
1부터 10까지 홀수만 출력해보자.
public void method1() { // 1부터 10까지 홀수만을 출력 // "1 3 5 7 9" // 방법1 for (int i = 0; i <= 10; i++) { if (i % 2 == 1) { System.out.print(i); } } //방법2 for(int i=1; i<=10; i+=2) { System.out.print(i+" "); } //방법3 : continue문 이용 for(int i=1; i<=10; i++) { if(i%2 ==0) { continue; // i가 짝수일 경우, 실행하지 않고, 다음증감식으로 넘어가라 } }
이렇게 쓸 수 있다.
연습 -->구구단을 모두 출력, 4의 배수단은 제외하고 출력(4,8단)
public void method2() { // 구구단을 모두 출력, 4의 배수단은 제외하고 출력(4,8단) for (int i = 2; i <= 9; i++) { if (i % 4 == 0) { continue; } System.out.println("-----" + i + "단 -----"); for (int j = 1; j <= 9; j++) { System.out.println(i + "x" + j + "=" + (i * j)); } } }
4단과 8단을 건너뛰고 출력된다.
public void method3() { //1부터 100까지의 총 합계 //단, 6의 배수값은 제외하고. int sum=0; for(int i=0; i<101; i++) { if(i%6==0) { continue; } sum+=i; } System.out.println(sum); }
연습 --> 1부터 100까지의 총 합계, 6의 배수값 제외한.
'개발 > 자바JAVA' 카테고리의 다른 글
배열 복사 (0) 2024.01.24 배열 (1) 2024.01.23 반복문(for문, while문) (0) 2024.01.22 제어문 > 조건문(if, switch문) (0) 2024.01.19 연산자 (1) 2024.01.18