2016-03-29 4 views
0

Je suis en train de faire ce qui suit:Aux prises avec try/catch InputMismatch Exception et la récupération de données à partir d'un tableau

  • Appel d'une méthode qui crée un Array avec 100 entiers générés au hasard.
  • Appelez une méthode qui invite l'utilisateur à entrer une position d'index du tableau et renvoie la valeur entrée. Si la valeur entrée par l'utilisateur n'est pas un nombre entier valide, lancez une "Exception de discordance d'entrée" qui invite l'utilisateur du problème et lui permet de saisir un entier correct ou de quitter le programme.

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

Mon problème est le code compile mais ne affiche rien et l'IDE dit indexPosition - "Assigned value never used"

modifier: code de ingrid dans les œuvres de commentaires parfaitement si vous entrez un entier valide mais il n'attrape pas les exceptions il se bloque juste

+0

S'il vous plaît fixer votre .. – 3kings

+0

Vérifiez indenter les conditions de votre 'while()' boucle, ils semblent être génial parce que '' indexPosition' n'est pas < 0 || > 100' au début ou à jamais dans ce cas. Il devrait être plus comme 'while (indexPosition! = -1)' (USER ENTERS -1 pour quitter la boucle? – 3kings

+0

Je ne suis pas sûr si elle devrait être 'if' 'au lieu de' while' parce que les nombres négatifs sont bien j'en ai juste besoin si l'utilisateur entre '0.5' ou une' chaîne' pour que le programme l'attrape et demande un autre entier ou s'il entre un entier propre pour qu'il imprime la valeur à cet index du tableau – archer

Répondre

3

Vous étiez presque là. Essayez la version suivante.

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

Cela fonctionne si vous entrez un entier valide mais il n'attrape aucune exception il se bloque juste – archer

+0

@archer J'ai Mise à jour du code pour répondre à vos besoins – alphablue

+0

Votre code avait encore quelques problèmes mais j'ai réussi à faire plus de recherches et à me débrouiller moi-même. – archer