【发布时间】:2014-11-15 18:16:37
【问题描述】:
这里是新程序员。这可能是一个非常基本的问题,但它仍然困扰着我。
我要做的是编写一种只提供一个整数输入的方法,这样我就可以在我的主程序中使用该输入,而不必乱用非整数输入。但是,即使在自己的方法中编写方法来执行此操作似乎也有问题。
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 这样的整数值,它应该完全跳过循环。但是,相反,它进入循环,并打印“请仅使用整数”。更糟糕的是,当我在那里时,它实际上并没有要求输入,只是重复打印该行。
我知道后一个问题可能是由于令牌问题,但我不一定确定如何解决它们;关闭然后重新打开扫描仪让 Eclipse 对“重复对象”进行错误处理,只需将旧输入分配给一个从未使用过的垃圾字符串变量,告诉我在运行时“未找到任何行”,而我经验不足想其他方法来获得新的意见。
即使解决了,我也需要找到一些方法来避免在有整数的情况下进入循环。我真的不明白为什么要在循环中输入整数,所以我不确定这怎么可能。
请帮忙?对不起,如果这是一个老问题;尝试查看过去的问题,但似乎没有一个问题与我有相同的问题。
【问题讨论】:
-
input.nextInt();将要求新的输入。input.hasNextInt();将检查下一个输入是否可用,并相应地返回真或假! -
@shekharsuman:那么有什么方法可以获取输入,不对输入可能是什么类型做出任何假设,检查输入是否为 int,如果不重复?如果我只是在我的实际循环中使用 input.nextInt() 并且进行了非 int 输入,那么我相信代码就会中断。
标签: java input token java.util.scanner