반복문에서는 break문 자식이 포함된 가장 가까운 반복문을 빠져나가는 구문
반복문 내에서만 사용 가능하며 반복문 실행 시 continue 아래 부분은 실행하지 않고 반복문 다시 실행
for문의 경우 증감식으로 이동, while(de~while)문의 경우 조건식으로 이동
전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용
1 부터 10까지 1씩 증가하며 출력하는 반복문 작성
단, 5를 출력하면 반복문 종료
2 3 4 5
public void ex1() {
for (int i = 1 ; i <= 10 ; i ++) {
System.out.print(i + " ");
if(i == 5) break;
}
}
입력 받은 모든 문자열을 누적
단, "exit@" 입력시 문자열 누적을 종료하고 결과 출력
public void ex2() { // void 반환형이 없음
String str = ""; // 빈 문자열
while(true) { // 무한 반복
System.out.print("문자열 입력(exit@ 입력 시 종료) : ");
String input = sc.nextLine();
if ( input.equals("exit@") ) {
break;
}
str += input + "\n";
}
System.out.println("=======================");
System.out.println(str);
}
next() : 다음 한 단어 (띄어쓰기 포함 X)
nextLine() : 다음 한 줄 (띄어쓰기 포함 O)
String 자료형은 비교연산자(==)로 같은 문자열인지 판별할 수 없음.
비교연산자(==)는 보통 기본자료형끼리의 연산에서만 사용 가능함.
-> String 은 기본 자료형이 아닌 참조형
문자열1.equals(문자열2) 으로 비교 가능
문자열2는 비교할 문자열
반환값이 boolean 같으면 true 다르면 false
continue : 다음 반복으로 넘어감
1~10까지 1씩 증가하며 출력
단, 3의 배수 제외
public void ex3() {
for (int i = 1; i <= 10; i++) {
if(i % 3 == 0) continue;
System.out.print(i+" ");
}
}
1 ~ 100 까지 1씩 증가하며 출력하는 반복문
단, 5의 배수는 건너띄고
증가하는 값이 40이 되었을 때 반복을 멈춤
public void ex4() {
for (int i = 1; i <= 100; i++) {
if(i == 40) break;
if(i % 5 == 0) continue;
System.out.println(i);
}
}
break; continue보다 위에 있어야함
아래에 있으면 continue 가 break 건너뛰어서 99까지 출력됨...
가위바위보 게임을 할건데,
몇 판할지 입력받음
입력받은 판 수만큼 게임 반복
컴퓨터 : Math.random() : 0이상 1미만 난수 생성
0.0 ~ 1.0
int random = (int)(Math.random() * 3 + 1);
1) 1~3 사이 난수 생성
2) 1이면 가위, 2이면 바위, 3이면 보 지정(switch)
컴퓨터와 플레이어 가위바위보 판별
가위 바이 보 입력 해서 승패 가리기
플레이어 승! 졌습니다
매판마다 현재 기록 : 2승 1무 0패
public void RSPGame() {
int random = (int)(Math.random() * 3 + 1);
System.out.println("[가위 바위 보 게임]");
System.out.print("몇 판? : ");
// 입력 받은 판 수
int input = sc.nextInt();
int win = 0;
int tie = 0;
int lose = 0;
// 입력 받은 판수만큼 반복됨
for (int i = 1; i <= input; i++) {
System.out.println();
System.out.println(i +"번째 게임");
System.out.print("가위/바위/보 중 하나를 입력 해주세요 : ");
String rsp = sc.next();
// 컴퓨터 보
if (random == 3 && rsp.equals("가위")) {
System.out.println("컴퓨터는 [보]를 선택했습니다.");
System.out.println("이겼습니다");
win++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 3 && rsp.equals("바위")) {
System.out.println("컴퓨터는 [보]를 선택했습니다.");
System.out.println("졌습니다.");
lose++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 3 && rsp.equals("보")) {
System.out.println("컴퓨터는 [보]를 선택했습니다.");
System.out.println("비겼습니다.");
tie++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 2 && rsp.equals("바위")) {
// 컴퓨터 바위
System.out.println("컴퓨터는 [바위]를 선택했습니다.");
System.out.println("비겼습니다.");
tie++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 2 && rsp.equals("가위")) {
System.out.println("컴퓨터는 [바위]를 선택했습니다.");
System.out.println("졌습니다.");
lose++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 2 && rsp.equals("보")) {
System.out.println("컴퓨터는 [바위]를 선택했습니다.");
System.out.println("이겼습니다.");
win++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 1 && rsp.equals("바위")) {
// 컴퓨터 가위
System.out.println("컴퓨터는 [가위]를 선택했습니다.");
System.out.println("이겼습니다.");
win++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 1 && rsp.equals("가위")) {
System.out.println("컴퓨터는 [가위]를 선택했습니다.");
System.out.println("비겼습니다.");
tie++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
} else if (random == 1 && rsp.equals("보")) {
System.out.println("컴퓨터는 [가위]를 선택했습니다.");
System.out.println("졌습니다.");
lose++;
System.out.printf("현재 기록 : %d승 %d무 %d패", win, tie, lose);
}
System.out.println();
}
}
switch문을 사용하지 않고 변수 설정을 안해서 식이 굉장히 복잡하고 긺
다시 작성
public void game() {
System.out.println("[가위 바위 보 게임~!!]");
System.out.print("몇 판 ? : ");
int round = sc.nextInt();
int win = 0;
int draw = 0;
int lose = 0;
for (int i = 1; i <= round; i++) {
// 입력 받은 판 수 만큼 반복
System.out.println("\n" + i + "번째 게임");
System.out.print("가위/바위/보 중 하나를 입력 : ");
String input = sc.next();
int random = (int)(Math.random() * 3 + 1); // 1 2 3
String com = null;
switch(random) {
case 1 : com = "가위"; break;
case 2 : com = "바위"; break;
case 3 : com = "보"; break;
}
// 컴퓨터는 [바위]를 선택했습니다.
System.out.printf("컴퓨터는 [%s]를 선택했습니다. \n",com);
// 컴퓨터와 플레이어 가위바위보 판별
if( input.equals(com) ) {
System.out.println("비겼습니다.");
draw++;
} else {
// 이긴 경우
boolean win1 = input.equals("가위") && com.equals("보");
boolean win2 = input.equals("바위") && com.equals("가위");
boolean win3 = input.equals("보") && com.equals("바위");
// 이겼으면 true 가 나오게 만들어줌
if(win1 || win2 || win3) { // if 문이 true 일 때 수행하는 거니까
System.out.println("플레이어 승!");
win++;
} else {
System.out.println("졌습니다 ㅠㅠ");
lose++;
}
}
// for 문 끝나기 전
System.out.printf("현재 기록 : %d승 %d무 %d패\n", win, draw, lose);
}
}
String com = null;
null : 아무것도 참조하고 있지 않음.
아무것도 참조하고 있지 않은 String 을 뜻함.
빈 문자열도 아니다