你好Stack overflow社区,
我的提示是:**“您将进行错误检查,以确保输入的小时在[0,23]范围内。继续询问用户,直到用户输入有效范围内的时间。
当我的程序有正确的整数输入(任何整数输入)时,它将正常工作。然而,如果我输入一个非整数,那么所有的东西都卡在一个无限循环中。
我做错了什么?
import java.util.*;
public class Tester2 {
int a; // any valid int number
public void loop()
{
Scanner sc = new Scanner(System.in);
int x=0; // terminating int
while(x==0)
{
System.out.println("Enter 0-23: ");
try
{
if(sc.hasNextInt())
{
a=sc.nextInt();
if((a>=0&&a<=23))
{
System.out.println("Success! ");
x=1;
}
else
{
System.out.println("Retry! ");
a=0;
x=0;
}
}
}
catch (NumberFormatException ex)
{
System.out.println("invalid input");
}
}
}
}
如果要读取的下一个元素不是有效整数,sc.hasNextInt()
将返回false
。但是,在这种情况下,代码中的任何一点都不会读取该元素。
当sc.hasNextInt()
为false时,应确保读取并丢弃此元素(在块中添加
sc.next()
就可以了)。
问题内容: 我很好奇:这两个循环实现之间在速度和性能上是否有所不同?假定 size() 方法返回处理一组元素的数组,集合或对象的长度(实际上是来自 XOM api)。 实施1: 实施2: 问题答案: 从性能的角度来看,没有什么区别。这是因为可以优化循环,以便内联size()查找,从而导致很小的性能差异。 主要区别在于循环时大小是否改变。第一种情况将尝试迭代固定次数。在第二种情况下,迭代次数将取决于
我试图设计一个购物车,读取美元数额,然后打印这些值回来。然而,我的时循环不会终止,我的数组列表存储了错误的值。 结果应该是这样的: 但这是我的输出: while 循环不会终止,而是返回到第一个提示:“请输入商品价格,或 -1 退出:” 程序不断将“-1”计为数组列表的一部分。“-1”值应该充当“否”并终止向 arrayList 添加更多元素,但在我的代码中,它被吸收到 arrayList 中。我尝
编辑:修正了缺少的“)”,对不起,这不是问题。是的,我在模式中使用了一个不区分大小写的标志。下面是一些更多的代码: Edit2:stribizhev在下面指出的问题是,我在中读取的字符串实际上是整个ASCII文件。
问题内容: 在我的Python应用程序中,我需要编写一个与以分号()终止的或循环匹配的正则表达式;。例如,它应与此匹配: …但是不是这个: 乍一看,这似乎很琐碎,直到你意识到左括号和右括号之间的文本可能包含其他括号,例如: 我正在使用python.re模块。现在,我的正则表达式如下所示(我留了我的评论,以便你可以更轻松地理解它): 这对于上述所有情况都非常适用,但是一旦你尝试使for循环的第三部分
问题内容: 在我用Swift编写的SpriteKit iOS游戏中,播放非常短的声音(约0.5秒)会产生打ic(如滞后)。在其他问题中,我读到我应该发出声音,就像以前那样。 我什至使用变量()在播放之前检查声音是否准备就绪。每当播放完()时,我也会重新准备声音。以下是代码的相关部分: 我不知道我在哪里犯了错误。我感觉我已经尝试了所有方法(包括但不限于:仅准备一次,在播放后立即准备,不使用变量,而只
在我的spring boot应用程序中,我有一个组件,它有一个方法,在下面的无限循环中运行一些作业,实际上它检查数据库中的一些数据: