2013-04-11 1 views
1

내 과제에 대해 복권 게임을하고 있습니다 (사용자 입력 6 번, 8 개의 고유 한 승리 번호를 생성하고 마지막 번호 2 개를 보완합니다). 입력 숫자가 1에서 45 사이이고 입력이 정수 여야하면 사용자 입력 검사와 관련하여 도움이 필요합니다. 입력이 정수가 아니면 오류가 발생합니다.Java에서 정수로만 사용자 입력 확인

이 프로그래밍 방식은 절차 방식으로, 어떻게 객체 지향 방식으로 변경할 수 있습니까? 나는 다른 java 파일에서 메소드를 작성한 다음이 main으로 다시 링크해야한다는 것을 알고있다. 어떻게 할 수 있니?

나는 try와 catch를 시도했다. if와 else (입력 검사를 위해)하지만 배열에있을 때 사용자 입력을 검사하는 방법을 모른다. 도와 줘서 고마워.

class Lottery { 

public static void main (String[] args) { 

    System.out.println("\nWelcome to the Lottery game."); 
    System.out.println("You can enter numbers from 1 to 45."); 

    // User input into an array 
    int[] input = new int[6]; 

    Scanner scanner = new Scanner(System.in); 

    System.out.println("\nPlease enter your 6 lucky numbers: "); 
    for(int j = 0; j < 6; j++) { 

     input[j]=scanner.nextInt(); 
    } 

    int check = scanner.nextInt(); 
    if(check < 0 && check > 45) { 
     System.out.println("\nERROR: Please enter only numbers from 1 to 45!"); 
    } 

    // Printing out unique winning numbers from random generator 
    System.out.println("\nWinning numbers: "); 
    MultiRandomGenerator mrg = new MultiRandomGenerator(); 
    int[] set; 

    set = mrg.getSet(); 
    for (int i = 0; i < set.length; i++) { 

     System.out.print(set[i] + " "); 
    } 

    // Loops for counting how many numbers user has guessed right 
    int count = 0; // for 6 numbers 
    int scount = 0; // for 2 last supplementary numbers 

    for(int i = 0; i < input.length; i++) { 

     for(int k = 0; k < set.length; k++) { 

      if (k < 6) { 

       if (set[k] == input[i]) { 

        count++; 
       } else { 
        if (set[k] == input[i]) { 

        scount++; 
        } 

       } 

      } 

     } 
    } 
    System.out.print("\n\nYou guessed right " + count + " winning numbers."); 
    System.out.print("\nYou guessed right " + scount + " suplementary numbers."); 

    // If statments for printing out winning prizes 
    if (count == 6) { 

     System.out.println("\nYou have won 1st price!"); 
    } if (count == 5 && scount == 1) { 

     System.out.println("\nYou have won 2st price!"); 
    } if (count == 5) { 

     System.out.println("\nYou have won 3st price!"); 
    } if (count == 4) { 

     System.out.println("\nYou have won 4st price!"); 
    } if (count == 3 && scount == 1) { 

     System.out.println("\nYou have won 5st price!"); 
    } if (count == 1 && scount == 2) { 

     System.out.println("\nYou have won 6st price!"); 
    } else { 

     System.out.println("\nSorry, you didn't won anything."); 
    } 
} 
} 

답변

1

당신은 당신의 루프에서 확인할 수

int val; 
try 
{ 
    input[j] = Integer.parseInt(scanner.nextString()); 
} 
catch (NumberFormatException ex) 
{ 

} 
+0

당신이 내 문제를 해결했습니다! :) +1 –

2

샘플 코드 같은 배열을 통해 이동하고 유효하지 않은 사용자 입력을 찾을 수 :

여기 내 코드입니다.

set = mrg.getSet(); 
String[] userDataStatus = new String[45]; 
for (int i = 0; i < set.length; i++) 
{ 
    try 
    { 
     String inputdata = set.get(i); 
     if(inputdata != null && inputdata.trim().length() > 0) 
     { 
      int currentNumber = Integer.parseInt(userdata); 
      userDataStatus[i] = "Y";//Y represent valid number 
     } 
    } 
    catch (NumberFormatException ex) 
    { 
     userDataStatus[i] = "N";//If it throws exception then save as 'N'  
    } 
} 

위의 문자열 배열을 사용하고 오류 메시지를 사용자에게 표시하십시오.

관련 문제