- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是新程序员。这可能是一个非常基本的问题,但它仍然困扰着我。
我想做的是编写一种仅提供一个整数输入的方法,这样我就可以在主程序中使用该输入,而不必处理非整数输入。然而,即使在自己的方法中编写方法来执行此操作似乎也是有问题的。
public static int goodInput () {
Scanner input = new Scanner (System.in); //construct scanner
boolean test = input.hasNextInt(); //set a sentinel value
while (test == false) { //enter a loop until I actually get an integer
System.out.println("Integers only please"); //tell user to give me an integer
test = input.hasNextInt(); //get new input, see if it's an integer
}
int finalInput = input.nextInt(); //once i have an integer, set it to a variable
input.close(); //closing scanner
return finalInput; //return my integer so I don't have to mess around with hasNextInt over there
}
这似乎在多个层面上都被破坏了,但我不太确定为什么。
如果我在第一次被要求输入时输入像 0 或 1 这样的整数值,它应该完全跳过循环。但是,它进入循环,并打印“请只输入整数”。更糟糕的是,当我在那里时,它实际上并不要求输入,而只是重复打印该行。
我知道后一个问题可能是由于 token 问题造成的,但我不一定确定如何解决它们;关闭然后重新打开扫描仪会让 Eclipse 因“重复对象”而给我带来麻烦,只需将旧输入分配给从未使用过的垃圾字符串变量,就会告诉我在运行时“未找到行”,而且我的经验还不够考虑其他方式来获取新的输入。
即使这个问题解决了,我也需要找到一些方法来避免在有整数的情况下进入循环。我真的不明白为什么整数输入首先要插入循环,所以我不确定这是如何可能的。
请帮忙?抱歉,如果这是一个老问题;尝试查看过去的问题,但似乎没有一个与我有相同的问题。
最佳答案
你很接近:这对我来说效果很好:
Scanner input = new Scanner(System.in); //construct scanner
while(!input.hasNextInt()) {
input.next(); // next input is not an int, so consume it and move on
}
int finalInput = input.nextInt();
input.close(); //closing scanner
System.out.println("finalInput: " + finalInput);
通过在 while 循环中调用 input.next()
,您可以消耗非整数内容并重试,直到下一个输入是 int。
关于java - 如何确保 Scanner hasNextInt() 请求新输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962939/
读完 hasNextInt() API 后,我仍然对这段代码感到困惑。 Scanner input = new Scanner(System.in); while (input.hasNextInt(
我有一个格式如下的 .txt 文件 The Shawshank Redemption 100 19.95 DVD 还有很多行,但我正在尝试将这些值存储到四个不同的 ArrayList 中。问题是出现错
这个问题已经有答案了: Check if String contains only letters (17 个回答) 已关闭 7 年前。 我是java新手,我想知道是否有其他方法可以代替has.nex
我有一个文件,每一行都有不同的整数。例如: 5 4 3 2 1 我正在尝试编写一个程序来遍历每个 int,并将该 int 放入一个数组中。到目前为止,我的代码是: Scanner sc =
我是初学者,我对 hasNextInt() 的使用感到困惑。如果它检查输入,那么我们不应该在请求用户输入后使用它吗?但是,在下面给定的代码中,它与 if 语句一起使用。请指教。 import java
这段代码没问题并且运行良好。 public static void main(String[] args) { String [] keywords={"auto","break","case
我知道这听起来像是一个非常愚蠢的问题,但我不明白我的错误在哪里。 为什么在循环的第二次迭代中,它不打印'Enter a number:'? import java.util.Scanner; publ
我正在尝试使用scanner.hasNextInt()方法从用户那里获取一些整数输入。它工作得很好,但我需要输入一个字母让程序知道我已完成输入整数,而我希望控制台知道在我在一行后按回车键后。 例如,我
我正在尝试 build 一个与用户指示的高度相同的金字塔。如果我使用下面的代码,它会告诉我我没有引入整数 btw 1-20...只要我不插入数字 0 && rows0 && rows 尝试这样做: i
我正在尝试创建一个程序,提示用户输入输入并仅在输入为整数时才显示输出 如果用户输入非整数值,程序将循环直到得到一个整数值 如果输入的是整数,程序将显示其值 我想要的输出将是这样的: 输入一个数字:a
嗨,我真的很困惑!从下面的代码中,您可以看到 obj.NextInt() 要求输入,并且还要求输入obj.hasNextInt() 需要输入内容。 Scanner obj=new Scanner(Sy
我想做的是让用户输入很多数字,然后按回车键,然后将所有这些数字一次存储到堆栈中。我的想法是使用循环来遍历所有数字并将它们压入堆栈,如下所示: Stack mainBin = new Stack();
你好,我的问题是这个程序。 int integer = 0; int evenInts = 0; Scanner in = new Scanner(System.in); System.out.pri
这个问题在这里已经有了答案: How to use java.util.Scanner to correctly read user input from System.in and act on
这个问题在这里已经有了答案: Validating input using java.util.Scanner [duplicate] (6 个答案) 关闭 5 年前。 public static
我有一个等待数字 (int) 的非常简单的循环,只要该数字不是 exitOption 它就不会离开循环,但是我得到了一个意外错误,我没有不知道是什么原因造成的。 编辑 添加另一个片段以便您可以编译 p
我不知道这里有什么问题 import java.util.Scanner; public class CountingInts { public static void main(String
我正在编写一个简单的程序,它从 Scanner 对象接收整数输入,确定它是否是回文,并返回 boolean 值。 对于大多数数字,它运行良好。但是,在这段代码中: private static voi
我正在使用以下代码: while (invalidInput) { // ask the user to specify a number to update the times by
该程序要求用户输入学号,学号必须是 0-999999 之间的整数。已被注释掉的 testID 方法使用 do while 循环和内部 while 循环,确保用户仅输入整数值。此方法运行没有任何问题。每
我是一名优秀的程序员,十分优秀!