스포츠마케터의 초보 개발자 도전기
JAVA study 05 본문
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 |