성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

Numeric / Prime 퀴즈 본문

백엔드개발/JAVA Quiz. zip

Numeric / Prime 퀴즈

hyemi_flora 2023. 11. 9. 10:48

 

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();

        }

 

}