반복문 While
횟수가 일정치 않을 경우 사용
while(조건식) {
실행문;
}
while문은 반드시 실행문안에 조건식 false가 될 수 있는식을 포함해야함.
ex) up / down Game
public static void main(String[] args) {
/* up / down Game
*
* 1-50 사이의 랜덤수를 생성하여 플레이어가 맞추는 게임.
Scanner scan = new Scanner(System.in);
int num1 = (int)(Math.random()*50)+1;
System.out.println("컴퓨터가 랜덤 수를 생성하였습니다.");
int count = 5;
while(true) {
System.out.println("숫자를 입력해주세요(1~50)");
if(count == 0 ) {
System.out.println("기회가 소진되었습니다. 정답: "+num1);
}
int num2 = scan.nextInt();
if (num2 > num1) {
count--;
System.out.println("down~!!");
} else if (num2 < num1) {
count--;
System.out.println("up~!!");
} else {
System.out.println("정답~!!" + num1);
break;
}
}
scan.close();
}
}
출력구문
println : 줄바꿈이 있는 출력
print : 줄바꿈이없는 출력, 출력값이 없으면 error
printf : 지시자를 이용한 출력
지시자
%d(정수형), %f(실수형), %c(문자), %s(문자열), %n(줄바꿈)
소수점 설정 가능, 공백추가 가능
주사위 게임
주사위를 던져서 총 30칸을 이동.
주사위 값은 랜덤으로 생성(1~6)
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = 0; // 던진횟수
int end = 30; // 도착지점
int sum = 0; // 주사위 총합
while(true) {
if(sum >= end) {
System.out.println("도착~!! 던진횟수: " +count);
break;
}
System.out.println("주사위 던지기 => Enter");
scan.nextLine();
count++;
int dice = (int)(Math.random()*6)+1;
sum += dice;
System.out.printf("%d칸 전진 => %d칸 남았습니다.%n", dice,(end-sum));
}
scan.close();
}
}
do~while문
do {
실행문;
}while(조건식);
- 실행문을 먼저 실행하고, 조건식을 비교하여 반복을 결정하는 구조
- for , while문은 조건식을 먼저 비교하기 때문에 조건식이 false면 한번도 실행되지 않을 수 있지만, do~while문은 무조건 1번은 거치고 난 후 비교.
menu 1. 저장하기 | 2. 새로만들기 | 3. 종료하기 같은 메뉴구성에 do~while()문을 많이 사용함.
ex)
public class DoWhile02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int menu = 0;
do {
System.out.println("----menu----");
System.out.println("1. 저장하기|2.새로만들기|3.종료하기");
System.out.println(">> menu >");
menu = scan.nextInt();
switch(menu) {
case 1:
System.out.println("저장되었습니다.");
break;
case 2:
System.out.println("새로만들었습니다.");
break;
case 3:
System.out.println("종료합니다.");
break;
default:
System.out.println("잘못된 메뉴");
}
}while(menu != 3);
System.out.println("종료!");
다중 for문 활용
소수 찾기, 2부터 100까지 소수만 출력하기.
Scanner scan = new Scanner(System.in);
System.out.println("숫자 하나를 입력해주십시오 >> ");
int num = scan.nextInt();
int cnt = 0;
for(int i=1; i<=num; i++) {
if(num%i == 0) {
cnt++;
}
}
if(cnt == 2) {
System.out.println(num + " 소수입니다.");
} else {
System.out.println(num + " 소수가 아닙니다.");
}
// 2부터 100까지 중 소수만 출력
for(int i=2; i<=100; i ++) {
int count = 0;
for(int j=1; j<=i; j++) {
if(i%j == 0) {
count++;
}
}
if(count == 2) {
System.out.print(i+" ");
}
}