2016-03-29 9 views
0

veri alınırken:deneme/yakalama InputMismatch özel durum ile Mücadele ve aşağıdaki yapmaya çalışıyorum Bir dizinin

  • Çağrı bir Array 100 ile rastgele oluşturulmuş tamsayılar yaratan bir yöntem.
  • Kullanıcının dizinin bir dizin konumunu girmesini ve girilen değeri döndürmesini isteyen bir yöntem çağırın. Kullanıcı tarafından girilen değer geçerli bir tam sayı değilse, sorunu kullanıcıya yönlendiren ve doğru bir tamsayı girme veya programdan çıkma olanağına izin veren bir "Giriş Uyumsuzluğu Girdi" atın. Eğer ancak bunu geçerli bir tamsayı girerseniz mükemmel yorumlar eserlerinde Ingrid'in kodu:

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]); 
      } 
     } 
    } 
} 

Benim sorunum kodu derler ama çıkış şey yapmaz ve IDE indexPosition - "Assigned value never used"

düzenleme söylediğini olduğunu

+0

sizin girintilemeyi düzeltin .. – 3kings

+0

onlar korkak gibi görünüyor sizin' iken() 'döngünün koşullarını kontrol' başlangıcında veya hiç bu durumda < 0 || > 100'. Döngüden çıkmak için (indexPosition! = -1) '(USER ENTERS -1) daha fazla olması gerekir – 3kings

+0

Olumsuz sayılar çünkü" while "yerine" if "olması gerekip gerekmediğinden emin değilim iyi eğer kullanıcı 0,5 'veya' dize 'programa girip onu yakalayıp başka bir tamsayı soruyorsa veya dizinin – archer

cevap

3

Sadece herhangi bir özel durum ortaya çıkmaz. Aşağıdaki sürümü deneyin. indexPosition` değil `çünkü

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

'dan önce başka bir catch() deyimine sahip olmanız gerekir. Geçerli bir tamsayı girerseniz çalışır, ancak yalnızca – archer

+0

@archer'ı çökerttiğim istisnaları yakalamaz. Gereksinimlerinizi karşılamak için kodu güncelledi – alphablue

+0

Kodunuzda hala bazı problemler vardı ama daha fazla araştırma yapıp kendim bulmayı başardım. – archer

İlgili konular