2016-03-29 38 views
0

我嘗試做以下檢索數據:用的try/catch InputMismatch異常掙扎,並從一個數組

  • 調用創建Array 100隨機生成的整數的方法。
  • 調用提示用戶輸入數組的索引位置並返回輸入值的方法。如果用戶輸入的值不是有效整數,則拋出「輸入不匹配異常」,提示用戶出現問題,並允許他們輸入正確的整數或退出程序。

package latest; 
import java.util.Scanner; 
import java.util.InputMismatchException; 
import java.util.Random; 

public class Latest 
{ 
    private static int[] randomInteger; 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int indexPosition = 0;  
     randomInteger = new int[100]; 
     Random rand = new Random(); 
     for (int i=0; i<randomInteger.length;i++)   
      randomInteger[i] = rand.nextInt(); 

     while (indexPosition < 0 || indexPosition > 100) 
     {   
      try 
      { 
       // get array index position 
       System.out.println ("Hello, please enter an integer for the array index position: "); 
       indexPosition = input.nextInt(); 
      } 
      catch (InputMismatchException e) 
      { 
       System.out.println ("You did not input a valid value. Please enter an Integer value between 0 and 100"); 
       indexPosition = input.nextInt(); 
      } 
      {  
       System.out.println ("You did not input a valid value. Please enter an Integer value between 0 and 100"); 
       indexPosition = input.nextInt(); 
       System.out.println (randomInteger[indexPosition]); 
      } 
     } 
    } 
} 

我的問題是代碼編譯,但不輸出任何東西和IDE是說indexPosition - "Assigned value never used"

編輯:英格麗在評論作品的代碼完全然而,如果你輸入一個有效的整數沒有發現任何異常,它只是崩潰

+0

請解決您的縮進.. – 3kings

+0

檢查'而()'循環的,他們似乎是時髦的條件,因爲'indexPosition'不是'< 0 || > 100'在開始或曾經在這種情況下。它需要更像'while(indexPosition!= -1)'(USER ENTERS -1退出循環? – 3kings

+0

我不確定它應該是'if''而不是'while',因爲負數是好,我只需要它,如果用戶輸入'0.5'或'字符串'程序來捕捉它並要求另一個整數,或者如果他們輸入一個適當的整數,它打印出的數組索引的值 – archer

回答

3

你幾乎在那裏。試試以下版本。

package latest; 

import java.util.Scanner; 
import java.util.InputMismatchException; 
import java.util.Random; 

public class Latest { 

private static int[] randomInteger; 

public static void main(String[] args) { 
    int indexPosition = 0; 
    Scanner input = new Scanner(System.in); 
    randomInteger = new int[100]; 
    Random rand = new Random(); 
    for (int i = 0; i < randomInteger.length; i++) 

     randomInteger[i] = rand.nextInt(); 

    System.out 
      .println("Hello, please enter an integer for the array index position: "); 
    do { 
     try { 
      // get array index position 
      indexPosition = input.nextInt(); 
     } catch (InputMismatchException e) { 
      System.out 
        .println("You did not input a valid value. Please enter an Integer value between 0 and 100"); 
      input.nextLine(); 
      continue; 
     } catch (Exception e) { 
      System.out 
        .println("You did not input a valid value. Please enter an Integer value between 0 and 100"); 
      input.nextLine(); 
      continue; 
     } 
     if (indexPosition < 0 || indexPosition > 100) { 
      System.out 
        .println("You did not input a valid value. Please enter an Integer value between 0 and 100"); 
     } 

    } while (indexPosition < 0 || indexPosition > 100); 
    System.out.println(randomInteger[indexPosition]); 
    input.close(); 
} 
} 
+0

它可以工作,如果你輸入一個有效的整數,但它沒有捕獲任何異常,它只是崩潰 – archer

+0

@archer我有更新代碼以滿足您的要求 – alphablue

+0

您的代碼仍然存在一些問題,但我設法做了一些更多的研究並自行解決。 – archer