当前位置: 首页 > 知识库问答 >
问题:

错误消息第一次打印两次通过

顾宸
2023-03-14

我使用以下代码询问用户的身高(英尺和英寸),如果用户的输入不是int,则返回一条错误消息:

loop = true;
while(loop){
    if(input.hasNextInt()){
        feet = input.nextInt();
        loop = false;
        break;
    }
    else{
        System.out.println("Invalid input, please enter an integer.");
        System.out.print("Feet: ");
        input.nextLine();
    }
}

loop = true;
System.out.print("Inches: ");

while(loop){
    if(input.hasNextInt()){
        inches = input.nextInt();
        loop = false;
        break;
    }
    if(!input.hasNextInt()){
        System.out.println("Invalid input, please enter an integer.");
        System.out.print("Inches: ");
        input.nextLine();
    }
}

程序返回feet的错误消息:

Feet: f
Invalid input, please enter an integer.
Feet:

但第一次返回英寸的错误消息时,它会返回两次:

Inches: f
Invalid input, please enter an integer.
Inches: Invalid input, please enter an integer.
Inches:

此错误仅在用户第一次输入整数以外的内容时发生。我怎么才能摆脱这个?

共有2个答案

邢承弼
2023-03-14

如果对英尺使用else效果很好,为什么不对英寸再次使用它呢?

if(!input.hasnextint())更改为else应该可以解决此问题。

太叔灿
2023-03-14

NextInt方法不使用整数后面的\n字符。

在第二个循环中,当hasnextint为false时,它读取一行。该行将为空,因为它正在读取上次的最终\n

在循环的第二次迭代中,它读取您输入的最后一行,然后再次出错。

修复方法是始终使用NextLine()并使用Integer.ParseInt(String);获取整数。hasnextint()仍然可以正常工作。

 类似资料:
  • 问题内容: python中的any命令行选项可以打印异常/错误类层次结构吗? 输出应类似于http://docs.python.org/2/library/exceptions.html#exception- hierarchy 问题答案: 检查模块可能会有所帮助,特别是getclasstree()函数: 将给定的类列表排列为嵌套列表的层次结构。在出现嵌套列表的地方,它包含派生自该类的类,这些类的

  • 我被这个聪明的问题困住了。我找不到一个可定制的解决方案。我正在尝试使用打印列表的。这是代码: 我试图得到这个结果(例如): 等等。问题是,我总是得到这样的信息(每次都是从打印出来的): 像这样: 并对列表的其余部分依此类推。谁能指导我解决这件事。任何帮助都非常感谢。

  • 问题内容: 我使用Python和无服务器在AWS上制作了echo工具。 我不断收到相同的请求。我读了一个常见问题,上面说您必须提供状态码200,否则它将继续重试网络挂接。 我不确定该怎么做。 我注意到呼叫的序列号始终相同,因此我假设我发送的回复未被确认。我的代码在这里 我在很多地方都给出了状态码200,但我不确定y仍然会遇到同样的问题。 问题答案: 如果收到多条消息,则服务器 未 从Faceboo

  • 因此,我当前遇到的问题是,在我完成所有步骤后,“Enter your command(reverse,replace first,replace last,remove all,remove)”语句被打印了两次。 我相信正在发生的是循环执行了两次,但我不知道为什么。如果能帮助解决这个问题,我们将不胜感激。抱歉,如果我的代码格式不好,还在学习如何正确的格式。

  • 我现在的代码: 我希望它打印两个数组的交集,而不需要再次打印相同的数字。 E、 g:code>[1,2,2,1]和的交点应该只打印一次,而不是像我现在的代码那样。

  • 问题内容: 我有一个简单的AJAX表单,该表单可以在提交时正常运行。但是,如果我随后将新数据输入相同的表单(而不刷新页面),则它将提交两次表单。如果我第三次这样做,那么它将第三次提交表单,依此类推。为什么这样做呢?这是我的代码: 问题答案: 即使我在开发AJAX登录表单时也遇到了同样的问题。搜寻了几个小时后,我找到了解决方案。希望这对您有所帮助。 基本上,您必须在ajax请求完成后 取消绑定 表单