Java 为什么Scanner#nextInt inside for loop不断抛出异常?
我一直在学习JAVA,我对代码有点怀疑:Java 为什么Scanner#nextInt inside for loop不断抛出异常?,java,java.util.scanner,Java,Java.util.scanner,我一直在学习JAVA,我对代码有点怀疑: class apple { public static void main(String[] args) { int[] num = new int[3]; Scanner input = new Scanner(System.in); for (int i = 0; i < num.length; i++) { try { num
class apple {
public static void main(String[] args) {
int[] num = new int[3];
Scanner input = new Scanner(System.in);
for (int i = 0; i < num.length; i++) {
try {
num[i] = input.nextInt();
} catch (Exception e) {
System.out
.println("Invalid number..assigning default value 20");
num[i] = 20;
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
我希望你们已经理解了我的问题。如果无法解析整数,它不会超越输入,因此如果失败后继续调用它,它将继续尝试再次解析相同的输入,抛出InputMismatchException
您可以忽略它返回的字符串,在catch
块中调用以跳过无效输入:
try {
num[i] = input.nextInt();
} catch (Exception e) {
System.out
.println("Invalid number..assigning default value 20");
num[i] = 20;
input.next();
}
更好的代码是,您可以检查下一个值是否为整数,这样您甚至不需要捕获异常:
public static void main(String[] args) {
int[] num = new int[3];
Scanner input = new Scanner(System.in);
for (int i = 0; i < num.length; i++)
{
if(input.hasNextInt())
{
num[i] = input.nextInt();
}
else
{
System..out.println("non integer value.. will assign it default value 20");
num[i]=20;
input.next();
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
publicstaticvoidmain(字符串[]args){
int[]num=新的int[3];
扫描仪输入=新扫描仪(System.in);
for(int i=0;i
这就是您的意思吗,它仍然会结转相同的值并引发异常<代码>尝试{num[i]=input.nextInt();}catch(异常e){System.out.println(“错误的值。请重试”);num[i]=input.nextInt();}+1但您应该添加一些代码解释。
try
{
num[i] = input.nextInt();
}
catch(InputMismatchException ip)
{
System.out.println("Invalid number..assigning default value 20");
num[i] = 20;
input.next();
}
public static void main(String[] args) {
int[] num = new int[3];
Scanner input = new Scanner(System.in);
for (int i = 0; i < num.length; i++)
{
if(input.hasNextInt())
{
num[i] = input.nextInt();
}
else
{
System..out.println("non integer value.. will assign it default value 20");
num[i]=20;
input.next();
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}