我是一个非常初级的程序员,在我大学的第一年。目前,我正在尝试编写一些Java代码,让用户使用扫描仪插入一个pin号码,如果提供的pin不是int,则要求新的输入。以下是我写的:
System.out.println("Please enter your pin. Please note that only numbers are allowed for this selection.");
boolean valid = false;
while(!valid)
{
try
{
pin = parser.nextInt();
valid = true;
}
catch (InputMismatchException error)
{
System.out.println("Please use only numbers in your pin.");
}
}
这段代码要求输入一个pin,将布尔变量设置为false,并进入一个while循环。扫描仪对象向系统请求输入。在中,如果响应不是int,则输入catch语句,并在其中打印错误消息。如果响应是int,那么一切正常,int被分配到pin字段,我们继续。然而,问题是,当输入catch语句时,它会无限重复。我使用这段代码的目的是执行catch语句,代码将运行回while循环的顶部,我将能够再次使用try块,提供一个新的要检查的输入。然而,代码似乎跳过了这个新的输入步骤,只是直接进入后续循环的catch块。有没有办法解决这个问题?
因此,当输入非整数时,代码立即跳转到异常块,因为解析器。nextInt()
引发异常。此异常会导致执行跳过valid=true
的赋值,直接跳转到catch
块。因此,while循环继续进行,因为!valid
仍然为真。
也许可以添加系统。在异常块中退出()。
最好是得到下一个字符,测试它是否有效。如果有效,则退出循环;如果无效,则显示消息。同时给他们一个角色,让他们停止尝试。这样,如果他们输入pin或“退出”字符,您将停止。
发布您的下一次尝试。
我该怎么解决呢? 第二次我什么都写不出来。
问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成
我是通过java基础教程学习并发性的。到了警戒区,试着测试一下。有一件事我无法理解。 While循环是无限的,但是如果取消对threadMessage line的注释,一切都会正常工作。为什么?
我是Java新手。我正在尝试遍历一个文件并将每个字符串写入ArrayList。为此,我有如下代码: 然而,由于某种原因,这段代码陷入了无限循环。即使我将打印语句作为当块的第一行,它也不会执行。 accountData.txt文件是这样排列的: 我已经读了很多遍,经常读到这是个问题,因为人们没有用Scanner.next()来移动指针,但我相信我正在这样做。我不知道哪里出了问题。 感谢您的帮助!
我试图从用户那里获取输入,为2D矿山的weeper游戏构建网格,当我将有效值传递给扫描器时,过程非常顺利,但当我尝试无效的东西时,它会经历无限循环,即使try块是用资源尝试,它应该用每一个新的尝试关闭扫描器,当它无限地打印捕获上的字符串时,它听起来不会关闭它