Java 例外和parseInt
为什么我的第一个方法“inputNumber”返回无限输出“这不是一个有效的数字” 第二个方法返回问题“键入有效数字:” 我不明白为什么带有parseInt的方法不能做同样的事情。。。 它们都抛出一个异常并执行“catch” 这是我的密码:Java 例外和parseInt,java,exception,try-catch,parseint,Java,Exception,Try Catch,Parseint,为什么我的第一个方法“inputNumber”返回无限输出“这不是一个有效的数字” 第二个方法返回问题“键入有效数字:” 我不明白为什么带有parseInt的方法不能做同样的事情。。。 它们都抛出一个异常并执行“catch” 这是我的密码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("you typed the number: " + inputNumber(input));
}
public static int inputNumber(Scanner input) {
int num = 0;
while (num == 0) {
System.out.print("Type a number: ");
try {
return input.nextInt();
} catch (Exception e) {
System.out.println("this is not a valid number");
}
}
return num;
}
public int readNumber(Scanner input) {
boolean running = true;
while (running) {
System.out.print("Write a number: ");
try {
int num = Integer.parseInt(input.nextLine());
return num;
} catch (Exception e) {
System.out.println("this is not a valid number");
}
}
return 0;
}
}
您还可以为inputNumber()方法尝试此逻辑
因为
input.next()
不会占用整行,并使循环无限大。提示:捕获所有类型的异常,然后只打印一些硬编码字符串。。。坏主意。打印异常本身,以获得真正出错的线索!谢谢你检查我的代码和建议。但我并不是真的在我的代码中寻找编辑。我想知道为什么parseInt异常不同于任何其他异常,以及为什么它使while循环不在无限循环中?
Please make few changes:
1. No need of num variable in inputNumber() method,
2. Make readNumber() method static.
public static int inputNumber(Scanner input) {
System.out.print("Type a number: ");
try {
return input.nextInt();
} catch (Exception e) {
System.out.println("this is not a valid number");
}
return 0;
}