문제 1. 정수를 입력받아 양수일 때만 1부터 입력받은 수까지 홀수/짝수를 나눠서
홀수면 ‘박’, 짝수면 ‘수’를 출력하도록 하세요.
단, 입력받은 수가 양수가 아니면 “양수가 아닙니다”를 출력하세요.
package com.yh.practice.comp.func;
import java.util.Scanner;
public class CompExample {
public void practice1() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("정수 : ");
int num = sc.nextInt(); // 정수를 입력받는 메소드
if (num > 0) { // 입력받은 정수가 양수일 때
for (int i = 1; i <= num; i++) {
if (i % 2 == 0) { // 짝수일 경우
System.out.print("수");
} else { // 홀수일 경우
System.out.print("박");
}
}
} else { // 입력받은 수가 0 이하일 경우
System.out.println("양수가 아닙니다.");
}
}
정수 : 10
박수박수박수박수박수
정수 : 0
양수가 아닙니다.
문제 2. 위 문제와 모든 것이 동일하나, 1 미만의 숫자가 입력됐다면
“양수가 아닙니다.”가 출력되면서 다시 사용자가 값을 입력하도록 하세요.
package com.yh.practice.comp.func;
import java.util.Scanner;
public class CompExample {
public void practice2() {
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 == 0) { // 짝수인 경우
System.out.print("수");
} else { // 홀수인 경ㅇ
System.out.print("박");
}
}
return; // 해당 메소드 빠져나가는 구문
} else { // 입력한 정수가 0 이하일 때
System.out.println("양수가 아닙니다.");
}
}
}
정수 : 0
양수가 아닙니다.
정수 :
문제 3. 사용자로부터 문자열을 입력받고 문자열에서 검색될 문자를 입력받아 해당 문자열에 그 문자가
몇 개 있는지 개수를 출력하세요.
package com.yh.practice.comp.func;
import java.util.Scanner;
public class CompExample {
public void practice3() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("문자열 : ");
String str = sc.nextLine(); // 문자열을 엔터전까지 입력받는 메소드
System.out.print("문자 : ");
char ch = sc.nextLine().charAt(0); // 문자열에서 index에 해당하는 단일문자 추출
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ch) {
count++;
}
}
System.out.println(str + " 안에 포함된 " + ch + " 개수 : " + count);
}
문자열 : christmas
문자 : s
christmas 안에 포함된 s 개수 : 2
문제 4. 위 문제와 모든 것이 동일하고, “더 하시겠습니까?”라고 추가로 물어보도록 하세요.
이때, N이나 n이 나오면 프로그램을 끝내고 Y나 y면 계속 진행하도록 하되 Y, y, N, n이 아닌
다른 문자를 입력했을 경우 “잘못된 대답입니다. 다시 입력해주세요.”를 출력하고
더 하겠냐는 물음을 반복하세요.
package com.kh.practice.comp.func;
import java.util.Scanner;
public class CompExample {
public void practice4() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
while (true) { // 다시 입력받는 조건식
System.out.print("문자열 : ");
String str = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
System.out.print("문자 : ");
char ch = sc.nextLine().charAt(0); // 문자열에서 index에 해당하는 단일문자 추출
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ch) {
count++;
}
}
System.out.println(str + " 안에 포함된 " + ch + " 개수 : " + count);
System.out.print("더 하시겠습니까? (y/n) : ");
char ch1 = sc.nextLine().charAt(0);
if (ch1 == 'n' || ch1 == 'N') { // n이나 N을 입력했을 경우
return; // 메소드 빠져나가는 구문. 프로그램 종료
} else if (!(ch1 == 'y' || ch1 == 'Y' || ch1 == 'n' || ch1 == 'N')) { // 다른 문자를 입력했을 경우
System.out.println("잘못된 대답입니다. 다시 입력해주세요.");
}
}
}
}
문자열 : orientation
문자 : n
orientation 안에 포함된 n 개수 : 2
더 하시겠습니까? (y/n) : y
문자열 : mobility
문자 : i
mobility 안에 포함된 i 개수 : 2
더 하시겠습니까? (y/n) : t
잘못된 대답입니다. 다시 입력해주세요.
문자열 : consensus
문자 : s
consensus 안에 포함된 s 개수 : 3
더 하시겠습니까? (y/n) : n
문제 5. 1부터 100 사이의 정수 중 임의의 난수가 정해지고 사용자는 정해진 난수를 맞추는데
몇 번 만에 맞췄는지 출력하세요.
package com.yh.practice.comp.func;
import java.util.Scanner;
public class UpAndDown {
public void upDown() {
int random = (int)(Math.random() * 100 + 1); // 1부터 100 사이의 랜덤값 구하기
Scanner sc = new Scanner(System.in); // 스캐너 생성
int count = 0;
while (true) {
System.out.print("1~100 사이의 임의의 난수를 맞춰보세요 : ");
int num = sc.nextInt(); // 정수를 입력받는 메소드
count++;
if (num > 100 || num < 1) { // 입력 받은 수가 1부터 100 사이의 수가 아닐 경우
System.out.println("1~100 사이의 숫자를 입력해주세요.");
} else {
if (random == num) { // 입력받은 수와 랜덤값이 같은 경우
System.out.println("정답입니다 !!");
System.out.println(count + "회만에 맞추셨습니다.");
return; // 메소드 나가는 구문. 프로그램 종료
}
if (random < num) { // 입력받은 수가 랜덤값보다 클 경우
System.out.println("DOWN !");
} else { // 입력받은 수가 랜덤값보다 작을 경우
System.out.println("UP !");
}
}
}
}
}
1~100 사이의 임의의 난수를 맞춰보세요 : 50
UP !
1~100 사이의 임의의 난수를 맞춰보세요 : 80
UP !
1~100 사이의 임의의 난수를 맞춰보세요 : 96
DOWN !
1~100 사이의 임의의 난수를 맞춰보세요 : 92
DOWN !
1~100 사이의 임의의 난수를 맞춰보세요 : 89
정답입니다 !!
5회만에 맞추셨습니다.