下面的程序只需从控制台读取整数并将其打印回来。当输入非int(如char或String)时,扫描仪抛出异常。我试图处理“尝试捕捉”块中的异常,然后继续读取下一个输入。从控制台输入第一个非int输入后,程序运行到无限循环。有人能帮忙吗?
public class ScannerTest {
static int i=1;
static Scanner sc;
public static void main (String args[]){
sc = new Scanner(System.in);
while (i!=0){
System.out.println("Enter something");
go();
}
}
private static void go(){
try{
i = sc.nextInt();
System.out.println(i);
}catch (Exception e){
System.out.println("Wrong input, try again");
}
}
}
As devnull said take the input from user everytime either in loop or in method,just change the loop to ..and it works fine
1)
while (i!=0){
sc = new Scanner(System.in);
System.out.println("Enter something");
go();
}
2其他方式
private static void go(){
try{ sc = new Scanner(System.in);
i = sc.nextInt();
System.out.println(i);
}catch (Exception e){
System.out.println("Wrong input, try again");
}
}
使用字符串:
import java.util.Scanner;
public class ScannerTest {
static int i = 1;
static Scanner sc;
public static void main(String args[]) {
sc = new Scanner(System.in);
while (i != 0) {
System.out.println("Enter something");
go();
}
}
private static void go() {
try {
i = Integer.parseInt(sc.next());
System.out.println(i);
} catch (Exception e) {
System.out.println("Wrong input, try again");
}
}
}
当扫描仪未能读取整数时,它不会清除输入缓冲区。假设输入缓冲区包含“abc”,因为这是您输入的。对"nextInt"的调用将失败,但缓冲区仍将包含"abc"。所以在循环的下一次传递中,“下一次”将再次失败!
在异常处理程序中调用sc.next()可以通过从缓冲区中删除不正确的令牌来纠正此问题。
我发现这样的php代码: 我希望这个循环会执行4次,因为$I变成了对$的引用(对吗?)。然而,循环只执行一次,并输出: a=10,i=10 我不明白为什么它会这样工作。有什么想法吗?
我对python中双for循环的使用感到困惑,这是我的代码: 输出如下: 它只对外循环的第一个值执行内循环,为什么会发生这种情况?我怎样才能让它在第一个和第二个变量的所有组合上循环?
我一直在读一本面向初学者的书,“第一头HTML5编程”,其中有这样一段代码: 目前,如果我调用,它将返回下一次显示是在下午5:00。我将循环条件更改为“I<=movie.showtimes.length;”但它仍然只运行一次,并且只显示下午5点。循环只迭代一次,即使我重写了这个函数: 不是应该跑两次吗?
} 链接:https://www.hackerrank.com/challenges/java-string-compare/problem
问题内容: 我只是发现我认为PLSQL与Oracle中的SQL有点意外的行为。 如果我在SQLDeveloper上运行此查询,则会得到5个结果: 但是,如果我在SQLDeveloper中运行以下语句: 变量 w_counter 以值1(怪异)结束 但最奇怪的部分是,如果我将查询封装在子查询中…… 该 w_counter 变量完成与价值5 … 你对此有什么要说的? 我正在使用Oracle 9.2i
我似乎找不到问题。输出是正确的,直到捕获到异常。当我抓住它时,程序会打印: 请给一个整数:无效整数,请重试请 给一个整数:无效整数,请重试… 非常我知道这一定是个愚蠢的错误。