로또 만들기_java

rami·2024년 4월 4일
0

Today I Learned

목록 보기
34/34
  • 문제 조건
  1. 사용자한테 번호 1~45사이 중 6개를 입력받음. 구분자는 ‘,’
  2. 부족해서도 넘쳐서도 안됨. 중복 안됨. 순서는 맘대로
  3. Math.Random() 함수 활용해서 1~45사이 숫자 6개 추출.
  4. 두개 비교.
  5. 6개 같으면 1등, 5개 같으면 2등 4개 같으면 3등...

package org.example;

import java.util.Scanner;

public class rotto {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("1~45사이의 숫자 6개를 ','로 구분지어 입력해주세요 : ");
        String str = sc.nextLine();

        int[] numNum = new int[6];
        for(int i = 0; i < numNum.length; i++) {
            numNum[i] = Integer.parseInt(str.split(",")[i]);
            //str.split(",")[i] -> [i]안붙이면 numNum[0]에 한줄로 다 들어가게 됨. 붙여야 숫자 한개씩 배열 한칸에 들어감. split은 배열로 반환해줌.
            System.out.println(numNum[i]);
        }

        int[] brr = new int[6];
        int count = 0;

        //값 비교할 때 같으면 count++;
        for(int i=0; i< numNum.length; i++){
            brr[i] = (int)(Math.random() * 45) + 1;
            System.out.println("brr : "+ brr[i]);
            if(numNum[i] == brr[i]){
                count++;
            }
            System.out.println("count"+count);
        }

        switch (count) {
            case 6:
                System.out.println("1등"); break;
            case 5:
                System.out.println("2등"); break;
            case 4:
                System.out.println("3등"); break;
            case 3:
                System.out.println("4등"); break;
            case 2:
                System.out.println("5등"); break;
            case 1:
                System.out.println("6등"); break;
            default:
                System.out.println("일치하는 숫자가 없습니다.");
        }
    }
}

package org.example;

import java.util.Scanner;

public class rotto {
    public static void main(String[] args) {
        boolean check = true;
        int[] numNum = new int[6];

        while (check) {
            check = false;
            Scanner sc = new Scanner(System.in);
            System.out.println("1~45사이의 숫자 6개를 ','로 구분지어 입력해주세요 : ");
            String str = sc.nextLine();
            String[] strNums = str.split(",");

            if (strNums.length != 6) {
                System.out.println("6개 입력하세요");
                check = true;

            } else {
                for (int i = 0; i < numNum.length; i++) {
                    numNum[i] = Integer.parseInt(strNums[i]);
                    if (!(1 <= numNum[i] && numNum[i] <= 45)) {
                        System.out.println("수를 1~45 범위 내로 입력해주세요.");
                        check = true;
                        break;

                    } else {
                        for (int j = 0; j < i; j++) {
                            if (numNum[i] == numNum[j]) {
                                System.out.println("중복될 수 없습니다. 다시 입력하세요.");
                                i = numNum.length;
                                check = true;
                                break;
                            }
                        }
                    }
                }
            }
        }

        int[] brr = new int[6];
        int count = 0;

        //값 비교할 때 같으면 count++;
        for (int k = 0; k < numNum.length; k++) {
            brr[k] = (int) (Math.random() * 45) + 1;
            if (numNum[k] == brr[k]) {
                count++;
            }
        }

        switch (count) {
            case 6:
                System.out.println("1등");
                break;
            case 5:
                System.out.println("2등");
                break;
            case 4:
                System.out.println("3등");
                break;
            case 3:
                System.out.println("4등");
                break;
            case 2:
                System.out.println("5등");
                break;
            case 1:
                System.out.println("6등");
                break;
            default:
                System.out.println("일치하는 숫자가 없습니다.");
        }
    }
}

check = false;로 재 초기화 하면 while문은 한번만 실행됩니다.
if문에 안걸리면 쭉 내려가서 ( = 정상적으로 6개 입력한 상태)
밑에 brr과 비교까지 이루어집니다.
근데 if문에 걸리면 에러문구가 출력되고 check = true;니까 while문이 재실행됩니다.

profile
앞으로 나아가는 사람

0개의 댓글