为什么我的扫描仪要求输入两次?

时间:2014-05-06 03:30:14

标签: java java.util.scanner

我正在为我正在创建的程序编写代码,而我想要的部分代码就是要求用户输入一个数字。

import java.util.Scanner;

public class DiceRoller {       


    System.out.println("Please input a number of you choice"); 

    Scanner x = new Scanner(System.in);

    double repeats = x.nextInt(); 

    if(x.hasNextInt()){            
        repeats = (int)Math.round(repeats);


    }          

}

所以这要求我输入一个数字,但我必须输入两次。

它也只使用第一个输入作为变量

2 个答案:

答案 0 :(得分:3)

获得nextInt()之后,您询问它是否有另一个hasNextInt()输入,如果您输入更多信息,则只知道这一点。

也许您打算将nextInt()放在if块中。也许您还希望将int repeats用作int值。

答案 1 :(得分:0)

您正在调用x.hasNextInt()并且扫描程序等待另一个输入以检查它是否为int。您还在读取int并将其分配给double(int不是)。为了进一步说明,你将int / double混合传递给Math.round,它将它转换为Long,然后将其转换为int并尝试将其分配给double。

如果您想检查一行是否为int,您应该尝试类似:

System.out.println("Please enter an integer.");
String line = x.nextLine();
int res=0;
try{
   res=Integer.parseInt(line);
}catch(Exception e){
   System.out.println("Not a number");
}