如何循环回TRY语句的开头?

时间:2013-10-18 05:48:26

标签: java

如何让它再循环回到FOR循环的开头?我试着搜索答案。继续使用对我来说似乎不起作用。

try{

    for (int i = 0; i < Array1.length; i++){
        System.out.println("enter Values ");

        Scanner input = new Scanner(System.in);
        Array1[i]= input.nextInt();
    }
}//try
catch (InputMismatchException e) 
{
    System.out.println("pls enter integers only ");

}//catch

我如何再次继续这个过程?例如

输入值 五 输入值 1 输入值 G 请仅输入整数 - &gt;&gt;错误异常就在这里

显示此错误后,如何在不重新输入值1的情况下继续输入值过程?

6 个答案:

答案 0 :(得分:3)

你必须把try / catch放在for循环中(并在catch块中减少i,这样所有的索引都会被填充)。

由于人们似乎对这里的基础知识感到困惑,为什么不使用整个代码:

Scanner input = new Scanner(System.in);
System.out.println("Enter integer values: ");
for (int i = 0; i < Array1.length; i++){
    try {
        Array1[i]= input.nextInt();
    } catch (InputMismatchException e) {
        System.out.println("Please enter integers only");
        i--;
    }
}
// Now your Array1 is filled with ints

答案 1 :(得分:1)

你说如果发生异常会如何回滚?你不能在for循环中插入try / catch语句吗?

Scanner input = null;

for (int i = 0; i < Array1.length; i++){
    System.out.println("enter Values ");

    input = new Scanner(System.in);
    try {
        Array1[i]= input.nextInt();
    } catch (InputMismatchException e) {
        System.out.println("pls enter integers only ");
    }
}

CODE EDITED:最好的编程用途是在循环外声明变量

答案 2 :(得分:1)

如果发生任何异常,它将重新开始。

    for(int i=0;i<a.length;i++){
        try{
            System.out.println("enter Values ");
            Scanner input = new Scanner(System.in);
            a[i]=input.nextInt();
        }
        catch(InputMismatchException e){
            System.out.println(e.getMessage());
            i=-1;
        }
    }
下面的

只会尝试获取触发异常的值:

for(int i=0;i<a.length;i++){
            try{
                System.out.println("enter Values ");
                Scanner input = new Scanner(System.in);
                a[i]=input.nextInt();
            }
            catch(InputMismatchException e){
                System.out.println(e.getMessage());
                i--;
            }
        }

答案 3 :(得分:1)

尝试使用以下代码。

try{
            for (int i = 0; i < Array1.length; i++){
                System.out.println("enter Values ");

                Scanner input = new Scanner(System.in);
                Array1[i]= input.nextInt();
                if(i==Array1.length-1) i=0;
            }
        }//try
        catch (InputMismatchException e) 
        {
            System.out.println("pls enter integers only ");

        }

将始终执行相同的循环。这是你想要的吗?

答案 4 :(得分:0)

如果要在捕获异常时再次启动整个过程,

boolean isValid = false;

while(isValid == false) {
try{

    for (int i = 0; i < Array1.length; i++){
        System.out.println("enter Values ");
        Scanner input = new Scanner(System.in);
        Array1[i]= input.nextInt();
    }
    isValid = true;
}//try
catch (InputMismatchException e) 
{
    System.out.println("pls enter integers only ");

}//catch
}

答案 5 :(得分:0)

try{
for (int i = 0; i < Array1.length; i++){    
System.out.println("enter Values ");
Scanner input = new Scanner(System.in);    
    Array1[i]= input.nextInt();
}
} 
catch (InputMismatchException e) {System.out.println("pls enter integers only ");
i = 0;
continue;
}

希望它有所帮助。