Numeric / Prime 퀴즈
Quiz 1>
package quiz;
import java.util.Scanner;
public class B08_Numeric {
/*
사용자가 입력한 문자열이 모두 숫자로 구성된 문자열인지 판별하는 프로그램을 만들어보세요
a1234 >> 모두 숫자인 문자열이 아닙니다
18732 >> 모두 숫자인 문자열입니다.
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("입력하세요 : ");
String number = sc.nextLine();
boolean numeric =true;
for (int i = 0; i < number.length(); ++i) {
char ch = number.charAt(i);
if (ch >= '0' && ch <= '9') {
numeric = false;
break;
}
}
if (numeric) {
System.out.println("모두 숫자인 문자열이 아닙니다");
} else {
System.out.println("모두 숫자인 문자열입니다");
}
}
}
논리연산자를 잘못 사용 하였다.
↓선생님 풀이
package quiz;
import java.util.Scanner;
public class B08_Numeric_T {
// 사용자가 입력한 문자열이 모두 숫자로 구성된 문자열인지 판별하는 프로그램을 만들어보세요
// 1. 숫자의 개수를 센다, 문자열의 길이와 숫자의 개수가 같으면 모두 숫자
// 2. 탐색하며 하나씩 보면서 숫자가 아닌게 하나라도 등장하면 모두 숫자가 아님 (검사를 그만) ★이걸로 풀어봐주게씀
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print(" :");
String str = sc.next();
boolean onlyNumber = true;
//한 문자씩 검사하다가 숫자가 아닌것이 발견되면 onlyNumber를 false로 바꾼다
for(int i=0; i <str.length();++i) {
char ch = str.charAt(i);
if(ch<'0' || ch>'9') {
onlyNumber = false;
break;
}
/*
onlyNumber = ch<'0' || ch >'9';
if(onlyNumber) {
break;
}
*/
}
if(onlyNumber) {
System.out.println("숫자로만 이루어진 문자열입니다.");
} else {
System.out.println("숫자로만 이루어지지 않았습니다.");
}
}
}
Quiz 2>
package quiz;
public class B08_ContinueQuiz {
//1. 600 ~800사이의 7의 배수를 모두 출력하기
//2. 1~200 까지의 숫자중 2의 배수도 아니고 3의 배수도 아닌 숫자 모두 출력
//3. 출력한 모든 숫자의 합을 출력하기
public static void main(String[] args) {
int sum = 0;
//1. 600 ~800사이의 7의 배수를 모두 출력하기
for (int i = 600; i <= 800; ++i) {
if (i % 7 != 0) {
continue;
}
sum += i;
System.out.print(i + " ");
}
System.out.println();
//2. 1~200 까지의 숫자중 2의 배수도 아니고 3의 배수도 아닌 숫자 모두 출력
for (int i = 1; i <= 200; ++i) {
if (i % 2 == 0 || i % 3 == 0) { // 2의 배수와 3의 배수를 만나면 다음반복으로 넘어가기때문
continue;
}
sum += i;
System.out.print(i + " ");
}
System.out.println();
//3. 출력한 모든 숫자의 합을 출력하기
System.out.println("모든 숫자의 합 :" + sum);
}
}
Quiz 3>
package quiz;
import java.util.Scanner;
/*
사용자가 정수를 입력하면 1부터 입력한 정수 사이에 있는 모든 소수를 출력
소수 (prime) : 나누어 떨어지는 수가 1과 자기 자신 밖에 없는 수
1,2,3,5,7,11,13,17,19,23,29.....
사용자가 10 입력하면 > 10과 1사이의 소수 2,3,5,7 이 나오도록
*/
public class B09_Prime_T {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자 >");
int num = sc.nextInt();
for (int i = 2; i <= num; ++i) {
boolean isPrime = true;
//1> count 이용, 약수가 2개인지 검사하기
//2> boolean 이용 2부터 i-1에 약수가 존재하면 소수가 아님
//3> 2부터 루트i까지 약수가 존재하면 소수가 아님 -> B09_Prime
// int count = 0;
// 이번숫자 i에 대한 약수 개수 검사
// for (int chk = 1; chk <= i; ++chk) {
for (int chk = 2; chk < i; ++chk) {
if (i % chk == 0) { // 이건 약수
isPrime = false;
break;
//++count;
// System.out.printf("%d는 %d로 나누어 떨어집니다.+" + "[약수의 개수: %d개]\n", i, chk, count);
}
}
// 검사가 끝났을때 약수가 2개라면 소수
// System.out.printf("%d는 소수인가요? %s\n", i, count == 2);
// if (count ==2 ) {
if (isPrime) {
System.out.print(i+ " ");
}
}
System.out.println();
}
}