제어문 종합 예제
문제 01.
정수를 입력 받아 양수일 때만 1부터 입력 받은 수까지 홀수/짝수를 나눠서 홀수면 ‘박’, 짝수면 ‘수’를 출력하도록 하세요.
단, 입력 받은 수가 양수가 아니면 “양수가 아닙니다”를 출력하세요.
ex.
정수 : 5
박수박수박
정수 : 10
박수박수박수박수박수
정수 : 0
양수가 아닙니다.
Scanner sc = new Scanner(System.in);
System.out.print("정수 : ");
int num = sc.nextInt();
if (num == 0) {
System.out.print("양수가 아닙니다.");
}else {
for(int i = 1; i <= num; i++) {
if(i % 2 == 1) {
System.out.print("박");
}else if(i % 2 == 0) {
System.out.print("수");
}
}
}
sc.close();
문제 02.
위 문제와 모든 것이 동일하나, 1 미만의 숫자가 입력됐다면 “양수가 아닙니다.”가 출력되면서 다시 사용자가 값을 입력하도록 하세요.
ex.
정수 : 4
박수박수
정수 : 0
양수가 아닙니다.
정수 : -3
양수가 아닙니다.
정수 : 6
박수박수박수
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("정수 : ");
int num = sc.nextInt();
if(num > 0) {
for(int i = 1; i <= num; i++) {
if(i % 2 == 1) {
System.out.print("박");
}else if(i % 2 == 0){
System.out.print("수");
}
}
sc.close();
break;
}else {
System.out.println("양수가 아닙니다.");
continue;
}
}
문제 03.
사용자로부터 문자열을 입력 받고 문자열에서 검색될 문자를 입력 받아 해당 문자열에 그 문자가 몇 개 있는지 개수를 출력하세요.
ex.
문자열 : banana
문자 : a
banana 안에 포함된 a 개수 : 3
Scanner sc = new Scanner(System.in);
System.out.print("문자열 : ");
String str = sc.nextLine();
System.out.print("문자 : ");
char str1 = sc.nextLine().charAt(0);
int result = 0;
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == str1) {
result ++;
}else {
continue; }
}
System.out.printf("%s 안에 포함된 %s 개수 : %d", str, str1,result);
sc.close();
문제 04.
위 문제와 모든 것이 동일하고, “더 하시겠습니까?”라고 추가로 물어보도록 하세요.
이 때, N이나 n이 나오면 프로그램을 끝내고 Y나 y면 계속 진행하도록 하되 Y, y, N, n이 아닌 다른 문자를 입력했을 경우 “잘못된 대답입니다. 다시 입력해주세요.”를 출력하고 더 하겠냐는 물음을 반복하세요.
ex.
문자열 : application
문자 : a
포함된 개수 : 2
더 하시겠습니까? (y/n) : y
문자열 : business
문자 : s
포함된 개수 : 3
더 하시겠습니까? (y/n) : k
잘못된 대답입니다. 다시 입력해주세요.
더 하시겠습니까? (y/n) : Y
문자열 : ant
문자 : b
포함된 개수 : 0
더 하시겠습니까? (y/n) : N
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("문자열 : ");
String str = sc.nextLine();
System.out.print("문자 : ");
char str1 = sc.nextLine().charAt(0);
int result = 0;
for(int i = 0; i < str.length(); i++ ) {
if(str.charAt(i) == str1) {
result ++;
}else {
continue;
}
}
System.out.printf("%s 안에 포함된 %s 개수 : %d\n", str, str1, result);
System.out.print("더 하시겠습니까? (y/n) : ");
char yesOrNo = sc.nextLine().charAt(0);
if(yesOrNo == 'y' || yesOrNo == 'Y') {
continue;
}else if(yesOrNo == 'n' || yesOrNo == 'N') {
break;
}else {
System.out.println("잘못된 대답입니다. 다시 입력해주세요.");
continue;
}
}
sc.close();
문제 05.
1부터 100 사이의 정수 중 임의의 난수가 정해지고 사용자는 정해진 난수를 맞추는데 몇 번 만에 맞췄는지 출력하세요.
ex. 90 1~100 사이의 임의의 난수를 맞춰보세요 : 0
1~100 사이의 숫자를 입력해주세요.
1~100 사이의 임의의 난수를 맞춰보세요 : 101
1~100 사이의 숫자를 입력해주세요.
1~100 사이의 임의의 난수를 맞춰보세요 : 50
UP ! 1~100 사이의 임의의 난수를 맞춰보세요 : 75
UP ! 1~100 사이의 임의의 난수를 맞춰보세요 : 83
UP !
1~100 사이의 임의의 난수를 맞춰보세요 : 93
DOWN !
1~100 사이의 임의의 난수를 맞춰보세요 : 89
UP ! 1~100 사이의 임의의 난수를 맞춰보세요 : 92
DOWN !
1~100 사이의 임의의 난수를 맞춰보세요 : 90
정답입니다 !!
7회만에 맞추셨습니다.
int random = (int) (Math.random() * 100 + 1);
Scanner sc = new Scanner(System.in);
int count = 1;
System.out.println(random);
while(true) {
System.out.print("1 ~ 100 사이의 난수를 맞춰보세요 : ");
int num = sc.nextInt();
if(num > 0 && num < 101) {
if(random == num) {
System.out.println("정답입니다 !!");
System.out.printf("%d회만에 맞추셨습니다.",count);
break;
}else if(random > num) {
System.out.println("UP !");
count++;
}else {
System.out.println("DOWN !");
count++;
}
}else {
System.out.println("1~100 사이의 숫자를 입력해주세요.");
}
}
sc.close();
문제 06.
사용자의 이름을 입력하고 컴퓨터와 가위바위보를 하세요. 컴퓨터가 가위인지 보인지 주먹인지는 랜덤한 수를 통해서 결정하도록 하고, 사용자에게는 직접 가위바위보를 받으세요. 사용자가 “exit”를 입력하기 전까지 가위바위보를 계속 진행하고 “exit”가 들어가면 반복을 멈추고 몇 번의 승부에서 몇 번 이기고 몇 번 비기고 몇 번 졌는지 출력하세요
Scanner sc = new Scanner(System.in);
System.out.print("당신의 이름을 입력해주세요 : ");
String name = sc.nextLine();
String cp = "";
int win = 0;
int defeat = 0;
int tie = 0;
while(true) {
int random = (int)(Math.random()*3);
if(random == 0) {
cp = "가위";
}else if(random == 1) {
cp = "바위";
}else {
cp = "보";
}
System.out.print("가위바위보 : ");
String user = sc.nextLine();
if((user.equals("가위")) ||(user.equals("바위"))||(user.equals("보"))) {
System.out.println("컴퓨터 : " + cp);
System.out.println(name + " : " + user);
if((cp.equals("가위") && user.equals("바위"))
||(cp.equals("바위") && user.equals("보"))
||(cp.equals("보") && user.equals("가위"))) {
System.out.println("이겼습니다.");
++win;
}else if(cp.equals(user)){
System.out.println("비겼습니다.");
++tie;
}else {
System.out.println("졌습니다 ㅠㅠ");
++defeat;
}
continue;
}else if(user.equals("exit")) {
System.out.printf("%d전 %d승 %d무 %d패",win + tie + defeat, win, tie, defeat);
break;
}else {
System.out.println("잘못 입력하셨습니다.");
continue;
}
}
sc.close();
강사님 풀이
public void rps2() {
Scanner sc = new Scanner(System.in);
// 필요한 자원 -> 변수
int total = 0; // 전
int win = 0; // 승
int tie = 0; // 무
int lose = 0; // 패
System.out.print("당신의 이름을 입력해주세요 : ");
String name = sc.nextLine();
while(true) {
System.out.print("가위바위보 : ");
String rps = sc.nextLine(); // exit
int random = (int)(Math.random()*3 + 1);
String com = "";
switch(random){ // 1 2 3
case 1:
com = "가위";
break;
case 2:
com = "바위";
break;
case 3:
com = "보";
break;
}
if(rps.equals("exit")) { // exit를 입력한 경우에는 종료
// 전승무패 출력
System.out.println(total + "전 " + win + "승 " + tie + "무 " + lose + "패");
// 종료
break;
}else if(rps.equals("가위") || rps.equals("바위") || rps.equals("보")) { // 잘입력한 경우
total ++;
System.out.println("컴퓨터 : " + com); // 컴퓨터 : 가위(랜덤값)
System.out.println(name + " : " + rps); // 이원종 : 보(내가 입력한 값)
if(com.equals("가위")) { // 컴퓨터가 가위를 낸 경우
switch(rps) {
case "가위" :
System.out.println("비겼습니다.");
tie ++;
break;
case "바위" :
System.out.println("이겼습니다.");
win ++;
break;
case "보" :
System.out.println("졌습니다.");
lose ++;
break;
}
}else if(com.equals("바위")) { // 컴퓨터가 가위를 낸 경우
switch(rps) {
case "바위" :
System.out.println("비겼습니다.");
tie ++;
break;
case "보" :
System.out.println("이겼습니다.");
win ++;
break;
case "가위" :
System.out.println("졌습니다.");
lose ++;
break;
}
}else if(com.equals("보")) { // 컴퓨터가 가위를 낸 경우
switch(rps) {
case "보" :
System.out.println("비겼습니다.");
tie ++;
break;
case "가위" :
System.out.println("이겼습니다.");
win ++;
break;
case "바위" :
System.out.println("졌습니다.");
lose ++;
break;
}
}
}else {
System.out.println("잘못 입력하셨습니다.");
}
}
}