【发布时间】:2015-06-11 02:12:39
【问题描述】:
我有一个关于数据验证和扫描仪的问题。以下代码检查用户输入。不允许使用除整数以外的任何内容,并要求用户重新输入值。我的问题是代码仅在以下情况下才有效扫描器在 while 循环中声明。如果扫描器在外部声明,程序将无限执行。为什么会这样?谢谢。
int UserInp;
boolean dataType=false;
while(dataType==false)
{
Scanner sc=new Scanner(System.in);
try
{
System.out.print("\nEnter a number: ");
UserInp=sc.nextInt();
dataType=true;
}
catch(Exception JavaInputMismatch)
{
System.out.println("Option not available.Try again.");
}
}
【问题讨论】:
-
不,它没有。我让它工作正常。您确定您所做的唯一更改是将
Scanner sc = new Scanner(System.in);移动到循环之前吗? -
我能够重现他的问题,我现在正在调查它。
-
@TimBiegeleisen 你是怎么做到的?
-
我将他的代码作为 IntelliJ 的控制台应用程序运行。我确定这是某种神器……只是想弄清楚到底是什么。
-
附带说明,尽管
while(dataType==false)在技术上是正确的语法,但将其表示为while(!dataType)被认为更优雅。此外,您可以使用do-while循环来强制执行至少一次迭代。
标签: java java.util.scanner validation