자바 로또 과제 질문입니다.

자바 로또 과제 질문입니다.

작성일 2009.05.17댓글 1건
    게시물 수정 , 삭제는 로그인 필요

import java.util.*;
class Test {
 public static void main(String args[]) {
  int num[] = new int[6]; //배열 생성
  for (int i = 0; i < 6; i++) {
   num[i] = (int) (Math.random() * 45) + 1;//배열에 1~45의 숫자 랜덤으로 삽입
   for (int j = 0; j < i; j++) { 
    if (num[i] == num[j]) { // 같은 숫자가 발견되면
     num[i] = (int) (Math.random() * 45) + 1;//같은 숫자라면 숫자 다시 생성하여 삽입
     i = i - 1; // 배열위치 이동

   //break; 없애는게 맞을듯
    }
   }
  }
 for (int i = 0; i < 6; i++) {
  System.out.println(num[i]); // 출력
}
}
 class LottoTest {
   public void main(String args[]){

    Scanner scan=new Scanner(System.in);

     while(true){
     System.out.print("로또 한번 찍어볼까?(시작:아무키나 입력,  종료:q) ");

       if(scan.next().equals("q"))//q가 입력되면 종료
      break;

     List<Integer> input=new ArrayList<Integer>();//Integer 형태만 들어갈수있는 ArrayList 생성
     int n;

       for(int i=1;i<7;i++){
      System.out.print((i)+"번째 숫자입력:");
      n=scan.nextInt();//로또번호 사용자 입력

      if(input.contains(n)){
       System.out.println("중복입력할수 없습니다");
       i--;

        }else if(n>45){
       System.out.println("45까지만 입력해주세요.");
       i--;

      }else
       input.add(n);//ArrayList 에 입력받은 숫자 삽입
     }

      LottoTest lotto = new LottoTest();
     System.out.println("로또 번호: "+lotto.getResult());
     System.out.println("입력 번호: "+input.toString());

       int result=lotto.check(input);//로또 당첨여부 체크
     if(result==1)
      System.out.println("당첨되지 않았습니다.");
     else
      System.out.printf("%d 등에 당첨되었습니다\n",result);
    }
   }

  private String getResult() {
   return null;
  }

  private int check(List<Integer> input) {
   return 1;
  }
  }
}

 

이런 식으로 구하되,

 

prn()으로 출력하라고 그랬고,

 

클래스는 lotto와 lottotest 두개를 구하는 것입니다.

 

lottotest는 돈을 입력받아서 돈을 지불한만큼 lotto번호를 출력할 수 있게 하는 프로그램입니다.

 

저도 이리저리 해보는데 잘 몰라서 질문드렸습니다.

 

많은 답변 부탁드립니다.


#자바 로또 중복제거 #자바 로또 번호 생성 #자바 로또 당첨 프로그램 #자바 로또 랜덤 #자바 로또 오름차순 #자바 로또 게임 #자바 로또 보너스 번호 #자바 로또번호 오름차순 #자바 로또번호 추출 #자바 로또 프로그램 소스

profile_image 익명 작성일 -

 

님소스를 조금 변형하여, 사용자에게 몇판을 할 껀지 물어본 다음,

게임이 끝나면, 결과를 추첨하는 방식으로 조금 바꿔 봤어요. . 님이 원하는게 아닌가;;

 

간단하게 주석을 달아 드릴께요, 위의 소스랑 거의 차이는 없어요. 한번 분석해서 님것으로 만드는게 중요할것 같네요..

 

import java.util.*;

public class LottoTest {
  public static void main(String args[]){
    Scanner scan = new Scanner(System.in);
    int count = 0;
    System.out.print("몇 게임 하실래요? 판수 : ");   // 로또 번호 출력 갯수 입력
    String strcount = scan.next();
while(!isInteger(strcount)) {//숫자만 입력되도록계속 돌림.
      System.out.print("숫자만 입력하세요. 몇 게임 하실래요? 판수 : ");
      strcount = scan.next();
    }
    count = Integer.parseInt(strcount);              // 출력 갯수를 count에 저장

    Object[] numbers = new Object[count];    // 사용자가 입력하는 로또 번호 모두 저장.

    System.out.println("로또 한번 찍어볼까?(아무때나 종료:q) ");  //번호 입력하는 부분에서 "q"를 누르면 종료라는 것을 보여줌
    int num = 0; //게임 수
    while(count > num) { //출력 갯수만큼 돌아감
      boolean isBreak = false; //while문을 벗어나기 위한 변수
      List<Integer> input = new ArrayList<Integer>();//Integer 형태만 들어갈수있는 ArrayList 생성

      int n = 0;
      for(int i=1;i<7;i++){
        System.out.print((num+1) + " 게임 ["); //몇번째 게임인지 보여줌.
        for (int j=0; j<i-1; j++) {
          System.out.print(input.get(j) + ", ");  //자신이 입력한 로또번호를 보여줌
        }

        String scanstring = scan.next();
        if (scanstring.equalsIgnoreCase("Q")) { // 대소문자 구분없이 q를 입력하면 종료
          isBreak = true;  //break;만 하면 while문은 벗어나지 못하므로 변수를 사용
          break;       
        }

        if (!isInteger(scanstring)) { //로또 번호 입력중 숫자가 아닐경우
          System.out.println("숫자만 입력해주세요.");
          i--;
          continue;
        }

        n = Integer.parseInt(scanstring); //로또번호 사용자 입력

        if (input.contains(n)){ //중복입력
          System.out.println("중복입력할수 없습니다");
          i--;
        }else if(n>45){ //46이상 입력시
          System.out.println("45까지만 입력해주세요.");
          i--;
        }else {
          input.add(n);//ArrayList 에 입력받은 숫자 삽입
        }
      }
      if (isBreak) { // for문을 벗어났을 때 isBreak가 true면 while문도 벗어남
        break;
      }
      System.out.println((num+1) + " 게임 완료" + input.toString()); //게임이 완료되면 최종 번호 확인
      numbers[num++] = input; //사용자가 입력하는 로또 번호 게임단위로 저장
    }

    LottoTest lotto = new LottoTest();
    int[] winningNumbers = lotto.getWinningNumber(); //당첨번호
    System.out.println("\n*********** 추첨 *****************");
    System.out.println("당첨 번호    " + lotto.getResult(winningNumbers));//당첨번호 출력
   
    for(int i=0; i<count; i++) {
      if (numbers[i] != null) {
        System.out.print("입력 번호("+(i+1)+") " + numbers[i].toString()); //입력 번호 출력
        System.out.println("- 당첨 갯수 : " + lotto.check(winningNumbers, (List<Integer>) numbers[i])); //당첨 갯수 확인, (List<Integer>)  Object[]에서 가져올때는 어떠한 형인지 명시
      }
    }
  }

  private String getResult(int num[]) {//배열을 문자열로 바꾸어 return
    String ret = "[";
    for (int i=0; i<num.length; i++) {
      if (i == num.length - 1) {
        ret += num[i] + "]";
      }
      else {
        ret += num[i] + ", ";
      }
    }
    return ret;
  }

  private int check(int num[], List<Integer> input) { //당첨 갯수 확인, num-->당첨번호, input ->입력번호
    int count = 0;
    for (int i=0; i<num.length; i++) {
      if (input.contains(num[i])) {
        count++;
      }
    }
    return count;
  }

  public static boolean isInteger(String s) { //s값이 정수인지 아닌지를 판단, 정수면 true 리턴
    try {
      Integer.parseInt(s);
    }catch(Exception e) {
      return false;
    }
    return true;
  }

  public int[] getWinningNumber() { //6개의 번호 무자기 생성
    int num[] = new int[6]; //배열 생성
    for (int i = 0; i < 6; i++) {
      num[i] = (int) (Math.random() * 45) + 1;//배열에 1~45의 숫자 랜덤으로 삽입
      for (int j = 0; j < i; j++) {
       if (num[i] == num[j]) { // 같은 숫자가 발견되면
         num[i] = (int) (Math.random() * 45) + 1;//같은 숫자라면 숫자 다시 생성하여 삽입
         i = i - 1; // 배열위치 이동
        }
      }
    }
    return num;
  }
}

 

허덥하지만, 한번 만들어 보았네요.. 혹시 의문사항이나 굼굼한점 있으시면 쪽지 주세요~.

그럼 좋은 하루^^

자바 로또 과제 질문입니다.

... while(true){ System.out.print("로또 한번 찍어볼까?(시작:아무키나 입력... 저도 이리저리 해보는데 잘 몰라서 질문드렸습니다. 많은 답변...

안녕하세요package ch07; i

... print("로또번호="); Arrays.sort(a); for(int n:a) System.out.print(n " "); } }제가 과제로 한 소스인데요 이해를 못하겠어서 질문올립니다.초인분들...

자바 코딩 과제 질문

... 809회까지 로또 번호가 적힌 이 파일 안에 역대 로또 번호 순서대로 lotto.txt... ex) 로또 회차 : 809 809회차 로또 번호 : 11 22 33 44 55 66 Bonus 77 이런식으로...