如何让扫描仪对象要求超过1个int?

时间:2013-10-14 17:37:53

标签: java java.util.scanner

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

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

我通过带有*图标的评论突出显示了特定问题。

这是我的代码。

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 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

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

  1. 要求用户输入一个逗号分隔值的字符串,然后拆分此字符串以获取所有整数。
  2. 用户输入一个数字并按Enter键并执行相同的n次。
  3. 干杯!!

答案 2 :(得分:1)

使用scanner.nextInt(),您每次只能获得一个号码。

  1. 你需要给扫描仪多少次。
  2. 喜欢

    first = scanner.nextInt();  second = scanner.nextInt();

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

      for(int i = 0; i&lt; 6; i ++)

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

    2. 您使用扫描仪

      读取字符串

      String s = scanner.next()

    3. //您可以输入的字符串,如20,34,334,:之后您可以使用','

      进行拆分

答案 3 :(得分: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]);
}

强调伪代码。