1

我正在为我的作业做彩票游戏(用户输入 6 个号码,我将生成 8 个唯一的中奖号码,最后 2 个号码是补充的)。我需要帮助检查输入数字是否从 1 到 45 并且输入必须是 int,当输入不是整数时,它会引发错误。

这种编程方式是过程方式,我怎样才能把它变成面向对象的方式?我知道我必须在另一个 java 文件中创建方法,然后将它链接回这个 main。你能建议我怎么做吗?

我尝试过尝试捕获,如果和其他(用于输入检查),但我不知道如何在用户输入在数组中时检查它。谢谢你的帮助。

这是我的代码:

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.");
    }
}
}
4

2 回答 2

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'       
    }
}

使用上面的 String 数组并向用户显示错误消息。

于 2013-04-11T23:35:41.787 回答
1

你可以检查你的循环,比如

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

}
于 2013-04-11T23:21:38.527 回答