Java 使用try-catch后,如何跳回while循环?

Java 使用try-catch后,如何跳回while循环?,java,try-catch,Java,Try Catch,不是整个程序,但这个程序做的是,它需要一组数字,并将偶数和赔率分开 public static void main(String [] args) { Scanner stdin = new Scanner(System.in);//for user input int[] evenNum = new int [100];//Even Array up too 100 int[] oddNum = new int[100];//O

不是整个程序,但这个程序做的是,它需要一组数字,并将偶数和赔率分开

     public static void main(String [] args)
    {
        Scanner stdin = new Scanner(System.in);//for user input
        int[] evenNum = new int [100];//Even Array up too 100
        int[] oddNum = new int[100];//Odd Array up too 100
        int evenIndex=0;//even numbers
        int input=0;//user input
        int i=0;//incrementer for arrays
        int k=0; 
        int j=0;

        String name;
        System.out.println("Type In Your Name");//Type in name 
        name = stdin.nextLine();

        try{
   while ((i < oddNum.length && i < evenNum.length) && input != -1)
  //Makes sure no more than 100 numbers can be placed.
        {

            System.out.println(name+" Enter a positive number, Enter -1 For results");
            input= stdin.nextInt();
            oddNum[i]=input;
            i++;//Increments array

            }
            }
        catch(Exception d)
        {
            System.out.println("Only Numbers Please");//Makes sure only numbers can be displayed

        }
publicstaticvoidmain(字符串[]args)
{
Scanner stdin=新扫描仪(System.in);//用于用户输入
int[]evenNum=new int[100];//甚至数组也向上100
int[]oddNum=newint[100];//奇数数组也向上100
int evendex=0;//偶数
int input=0;//用户输入
int i=0;//数组的增量
int k=0;
int j=0;
字符串名;
System.out.println(“键入您的姓名”);//键入您的姓名
name=stdin.nextLine();
试一试{
while((i

我尝试过使用return,但这是一个类型void,因此我无法使用。它们是我可以使用的pass引用吗?

try catch
放入
while
循环中

while ((i < oddNum.length && i < evenNum.length) && input != -1)
//Makes sure no more than 100 numbers can be placed.
{
    try {
        System.out.println(name+" Enter a positive number, Enter -1 For results");
        input= stdin.nextInt();
        oddNum[i]=input;
        i++;//Increments array
    }
    catch(Exception d)
    {
        System.out.println("Only Numbers Please");//Makes sure only numbers can be displayed
    }
}
while((i
捕获实际要处理的异常

考虑一下你的结构:

try {
  while {
    //...
  }
} catch {
  //...
}
当您在
catch
块中时,
while
块完成。流已退出该块,因此没有返回路径。基本上,循环结束

另一方面,考虑这一点:

while {
  try {
    //...
  } catch {
    //...
  }
}

在这种情况下,当您退出
catch
块时,您仍然处于
while
块中。因此循环可以继续。

为什么不在循环中尝试
而不是整个循环?如果您要求人们阅读代码,请明智地缩进代码。我这样做了,但catch部分继续出现在无限循环中@罗纳尔多:我认为这是因为
stdin
仍然需要从控制台读取一些内容。将
scanner.next();
插入
catch
子句。此外,在I的增量之前,您可能会失败,因此您永远不会增加I!我将try-catch放入while循环中,但我似乎得到了一个连续循环“dh输入一个正数,请输入-1作为结果数字”appearing@Ronaldo:无限循环意味着您的循环条件永远不会结束。您必须在调试器中单步执行,以确定该条件没有更改的原因(以及您认为应该更改的位置)。