2015-04-07 170 views
0

我有这种方法,它工作正常。我需要放一个try/catch语句,所以如果用户输入一个字母,该方法可以继续执行 。我不知道在哪里发表声明,似乎无处不在我把它弄错了。请有人告诉我在哪里发表这个声明?while循环中的Java try-catch语句

public void myMethod() { 

    Scanner in = new Scanner(System.in); 
    int array[] = new int[21]; 
    int number; 

    boolean end = false; 

    while (!end) { 

     System.out.println("Please give an number between 0-20: "); 
     number = in.nextInt(); 

     for (int i = 1; i < array.length; i++) { 

      if (i == number) { 

       System.out.println(array[number]); 
       end = true; 
      } 
     } 
     if (!end) { 
      System.out.println("I cant find number " + number 
        + " in the array, please try again "); 
     } 

    } 

} 
+0

你是什么意思“它得到错误”?只是添加'尝试{你的代码的一些部分}'不会帮助;因为你必须考虑当用户提供的输入不是数字时会发生什么。 – GhostCat

+0

它循环并打印,直到达到stackoverflow –

+0

如果用户输入不是数字,我该如何解决这个问题? –

回答

0

for循环我无法解释,你只需要检查0到20之间的值, 当你骂尝试捕捉,你有异常后跳过循环

public static void myMethod() { 

    Scanner in = new Scanner(System.in); 
    int array[] = new int[21]; 
    int number=0; 

    boolean end = false; 

    while (!end) { 


     System.out.println("Please give an number between 0-20: "); 
     //check symbol 
     try{ 
      number = Integer.valueOf(in.next()); 
     }catch(Exception e) 
     { 
      System.out.println("It's not a number! "); 
      continue; //skip loop 
     } 

     if((number>=0)&&(number<=20)) 
     { 
       System.out.println(array[number]); 
       end=true; 
     } 
     else 
      System.out.println("I cant find number " + number 
         + " in the array, please try again "); 

     /* why do you use loop here??? 
     * u need to check if number between 0-20 
     for (int i = 1; i < array.length; i++) { 

      if (i == number) { 

       System.out.println(array[number]); 
       end = true; 
      } 
     }*/ 


    } 

} 
+0

谢谢,我们有它:) –

0
System.out.println("Please give an number between 0-20: "); 
    try{ 
     number = in.nextInt(); 
    }catch(Exception e){ 
     number = 1; //Put random number of default number here 
    } 
+0

我试着用数组外的数字,但它始终循环打印。如果我将随机数字的默认值设置为1,它会打印该数组的元素,这不是该方法应该执行的操作 –

+0

该方法假设要做什么? –

+0

这只是一个excersise,我需要输出从用户给出的数组中的元素。它的效果很好,但如果用户碰到一封信,它崩溃 –

0
public static void main(String[] args) { 

    Test test = new Test(); 
    Scanner in = new Scanner(System.in); 
    int array[] = new int[21]; 
    int number; 
    System.out.println("Please give an number between 0-20: "); 
    do{ 
     try{ 
      number = Integer.parseInt(in.next()); 
     } 
     catch(Exception e){ 
      System.out.println("Please give an number between 0-20: "); 
      number = -1; 
     } 
    } 
    while(!(number <= 20 && number >=0)); 
    System.out.println(array[number]); 
}