1

我正在制作一个彩票游戏,我试图让控制台允许用户输入 6 个数字,但它只允许用户在将它们与随机数进行比较之前输入 1。

有没有办法让用户在不创建新的 int 变量的情况下输入 6 个数字,而不是将它们与生成的随机数进行比较?

我有一个带有 * 图标的评论突出显示的特定问题。

这是我的代码。

for (int i = 1; i <=6; i++) {
        Random run  = new Random();
        LottoNumbers.add(i);
        run.nextInt(49);
        //Get Users Lotto Picks
        //*Console will not ask for 6 numbers
        Scanner scan = new Scanner(System.in);
        int lottopick = scan.nextInt();         


        //prevent user from picking number higher than 49
        if (lottopick > 49) {
            System.out.println("You canonl pick numbers between 1 and 49");
        }
        //Compare User selection to random numbers generated
        System.out.println("Enter Your Six Numbers between 1 and 49");
        if (lottopick == run.nextInt(49)) {
            System.out.println("Millionaire");
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));

        }
        else {
            System.out.println("You lose");
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));
            System.out.println(run.nextInt(49));    
        }           
}

请不要继续制作完整的应用程序,因为否则我永远不会学习。谢谢

4

4 回答 4

1

因为,每个输入都问同样的问题,你应该使用一个 for 循环和一个输入数组:

Scanner scan = new Scanner(System.in);
int[] lottopick = new int[6];

for(int i = 0; i < lottopick.length; i++) {
  System.out.println("Enter next lottery number: ");
  lottopick[i] = scan.nextInt();
}
于 2013-10-14T17:42:36.787 回答
1

有几种方法可以做到这一点,首先你需要决定如何从用户那里获取输入,这里有一些方法:

  1. 要求用户输入一个逗号分隔值的字符串,然后拆分该字符串以获取所有整数。
  2. 用户输入一个数字并按回车键并重复 n 次。

干杯!!

于 2013-10-14T17:52:30.260 回答
1

使用scanner.nextInt() 你一次只能得到一个数字。

  1. 你需要给扫描仪多少次你想要的。

喜欢

第一 = 扫描仪.nextInt(); 第二 = 扫描仪.nextInt();

  1. 你可以在 For 循环中给出它

    for(int i=0;i<6;i++)

    { 数组[i] =scanner.nextInt(); }

  2. 您使用扫描仪读取字符串

    字符串 s =scanner.next()

// 可以输入的字符串,例如 20,34,334,: 之后可以使用 ',' 进行拆分

于 2013-10-14T17:55:22.437 回答
0

如果你真的想在一行上输入,你可以得到一个字符串,用空格分割,然后解析整数。

在伪代码中:

Scanner scan = new Scanner(System.in);
string lottoNumbers;

lottoNumbers = scan.next();

stringChunks[] = lottoNumbers.Split(" ");

for(int x = 0; int < stringChunks.Size; x++){

    Integer.GetInt(stringChunks[x]);
}

强调伪代码。

于 2013-10-14T17:54:58.550 回答