고래씌
[JAVA] 4-4. 제어문(while문), break, continue 본문
1. while문
[표기법]
[초기식;] // 필수가 아님
while(조건식) { // 조건식의 결과가 true일 경우 while문의 중괄호 블럭안의 내용이 반복적으로 실행된다.
반복적으로 실행할 코드들
[증감식;] // 필수가 아님
}
public void method1() {
// for문을 while문으로, while문을 for문으로 변경해보기
// for(int i=0; i<5; i++) {
// System.out.println("안녕하세요");
// }
//
// int i = 0; // 초기식
//
// while(i<5) { // 조건식
// System.out.println("안녕하세요");
// i++;
// }
for(int i=1; i<10; i+=2) {
System.out.println(i + " ");
}
int i =1;
while(i<10) {
System.out.print(i + " ");
}
}
□ random 함수를 이용한 while문
public void method3() {
// 1부터 랜덤값(1~100) 까지의 총 합계
// while 으로 작성
// 출력예시 : 1부터 random까지의 총 합계 : sum
int random = (int) (Math.random()*100 + 1);
// 방법1
int i = 1;
int sum = 0;
// while(i<=random) {
// sum += i;
// i++;
// }
//방법 2
int initrandom = random;
while(random > 0) {
sum += random--;
}
System.out.printf("1부터 %d까지의 총 합계 : %d", initrandom, sum);
}
□ A_for 클래스의 10번 메소드를 while 문으로 바꾸기
public void method4() {
// A_for클래스의 10번 메소드를 while문으로 바꾸기
// 다른 패키지의 있는 것을 사용할 때, 패키지 경로 까지 포함하게 된다면 사용가능!
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.print("문자열 입력: ");
String str = sc.nextLine();
// for(int i=0; i<=str.length()-1; i++) {
// System.out.println(str.charAt(i));
int i = 0; // 조건식
while(i<=str.length() -1) { // 조건식
// 실행할 코드
System.out.println(str.charAt(i));
i++;
}
}
2. do-while문
[표현법]
do { // 조건검사 없이 무조건 1번은 실행한다. => 조건식 결과가 fasle더라도 한번은 반드시 수행함
실행할 코드
}while(조건식); // 조건식의 결과가 true면 실행할 코드 실행
// 조건식의 결과가 false면 반복문 빠져나옴
※ for/while문과 do-while문의 차이점
for/while문은 처음 시작할 때부터 조건검사를 하고 반환값이 true여야 실행을 함
do-while문은 첫실행은 무조건 조건검사 없이 실행된다.
public void method5() {
int num = 900;
do {
System.out.println("하이");
}while(num == 0); //false
}
3. break
1) break;
- break문을 만나는 순간 현재 속해있는 반복문을 빠져나감
- 주의할 점 : switch문 안의 break와는 다른 개념
- switch문안의 break는 해당 switch문만 빠져나가는 용도.
Q. 매번 반복적으로 == 무한 반복
발생되는 랜덤값(1~100)을 출력
단, 랜덤값이 3의 배수일경우 반복문을 종료.
public void method1() {
// 매번 반복적으로 == 무한 반복
// 발생되는 랜덤값(1~100)을 출력
// 단, 랜덤값이 3의 배수일경우 반복문을 종료.
while(true) { // 무한반복
// 랜덤값 추출
int random = (int)(Math.random() * 100 + 1);
// 랜덤값 출력
System.out.println("random : " + random);
// 랜덤값이 3의 배수인지 검사
if(random % 3 == 0) {
break; // 반복문 종료
}
}
}
Q. 매번 사용자에게 문자열을 입력 받은 후 해당 문자열과 문자열의 길이 출력
단, 사용자가 입련한 문자열이 exit인 경우는 반복문 종료
public void method2() {
Scanner sc = new Scanner(System.in);
while(true) {
// 매번 사용자에게 문자열을 입력 받은 후 해당 문자열과 문자열의 길이 출력
// 단, 사용자가 입련한 문자열이 exit인 경우는 반복문 종료
System.out.print("문자열 입력 : ");
String str = sc.nextLine();
if(str.equals("exit")) {
break;
}
System.out.println(str + "의 길이는 : " + str.length());
}
}
Q. 매번 반복적으로 사용자에게 양수를 입력받아 1 ~ 사용자가 입련한 수까지 출력
단, 정상적으로 양수를 입력했을 시에만 1~ 사용자가 입력한 수까지 출력을 한 후 종료
양수가 아닌 숫자를 입력 시 "잘못입력했습니다. 다시 입력해주세요" 출력
public void method3() {
// 매번 반복적으로 사용자에게 양수를 입력받아 1 ~ 사용자가 입련한 수까지 출력
// 단, 정상적으로 양수를 입력했을 시에만 1~ 사용자가 입력한 수까지 출력을 한 후 종료
// 양수가 아닌 숫자를 입력 시 "잘못입력했습니다. 다시 입력해주세요" 출력
// 무한반복 + break 를 이용
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("1 ~ 양수 입력 : ");
int num = sc.nextInt();
if(num > 0) {
for(int i = 1; i<=num; i++) {
System.out.print(i +" ");
}
break;
}
System.out.println("잘못입력했습니다. 다시 입력해주세요");
}
}
4. Continue
1) continue; : 반복문 안에서 사용하는 구문
continue를 만나게 되면 그 다음에 어떤 코드가 있던 간에 실행하지 않고 가장 가까운 반복문으로 올라감.
Q. 1부터 100까지의 총 합계
단, 6의 배수값은 빼고 더하기
반복문 내부에 continue문을 활용해서 코드를 작성하기
출력예시 : 총합계 : xx
public void method2() {
// 1부터 100까지의 총 합계
// 단, 6의 배수값은 빼고 더하기
// 반복문 내부에 continue문을 활용해서 코드를 작성하기
// 출력예시 : 총합계 : xx
int sum = 0;
for(int i=1; i<=100; i++) {
if(i % 6 != 0) {
sum += i;
}else {
continue;
}
}
System.out.println("총합계는 : "+sum);
}
Q. 2단 ~ 9단까지 모든 구구단을 출력 하되, 4의 배수단은 제외하고 출력
(continue문 사용)
public void method3() {
// 2단 ~ 9단까지 모든 구구단을 출력 하되, 4의 배수단은 제외하고 출력
// (continue문 사용)
for(int i=2; i<=9; i++) {
if(i % 4 == 0)
continue;
for(int j=1; j<=9; j++) {
System.out.printf("%d * %d = %d\n",i, j, i*j);
}
}
}
'JAVA > JAVA 기초' 카테고리의 다른 글
[JAVA] 5-1. 배열 실습문제 (0) | 2023.10.11 |
---|---|
[JAVA] 5. 배열 (0) | 2023.10.10 |
[JAVA] 4-4. 제어문(반복문 실습문제) (0) | 2023.10.06 |
[JAVA] 4-3. 제어문(for 문) (0) | 2023.10.05 |
[JAVA] 4-2. 제어문(실습문제) (0) | 2023.10.05 |