【发布时间】:2015-03-25 10:23:46
【问题描述】:
我正在尝试创建一个 java 函数,该函数返回用户输入的 int,但在用户输入有效数字之前不会返回。这是我最初的函数模型:
public int getChoice(){
try{
return scan.nextInt();
}catch(Exception e){
return getChoice();
}
}
scan 由Scanner scan = new Scanner(System.in); 声明
这个函数产生了一个Java.lang.stackOverflowError(嗯......这似乎是一个合适的网站......)。我认为这是因为该函数不断被调用。
我考虑过以某种方式使用Integer.valueOf(scan.nextLine())',但我没有真正用它做任何事情的原因是因为在某些时候,我无法弄清楚是什么决定了这是否会发生,但按下“Enter” ' 当程序调用nextLine() 时,将跳过下一个nextLine()。我实在想不出办法。
所以,如果有人可以提供一个 Java 函数,它将循环直到用户输入一个有效的整数,然后返回该整数,请这样做,谢谢。
【问题讨论】:
-
你可以在不递归的情况下重写你的代码来看看会发生什么:把它放在一个
while(true)循环中并删除对getChoice()的调用——返回将打破循环,如果有异常它只会重复。
标签: java input io int java.util.scanner