Je fais un programme pour ma mission. Ce n'est pas tout le programme mais c'est juste une partie de celui-ci.

Je veux que l'utilisateur entre des valeurs entières à stocker dans des tableaux "items". Lorsque l'utilisateur saisit "stop", la boucle doit se fermer et voici le problème .. quand j'écris stop le programme s'arrête et me donne des erreurs.

 public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     int i=0, lines=1;
     int[] items = new int[100];
     int total = 0;
     System.out.println("Enter the items with its price");

     while(true){
          i=i+1;
          if ("stop".equals(scan.nextLine()))
              break;
          else
              items[i] = scan.nextInt();
     } 

 }
-3
Mick2160 20 avril 2017 à 19:50

3 réponses

Meilleure réponse

Il y a certaines erreurs dans votre code. C'est mieux si vous pouviez simplement ajouter l'erreur.

Essayez ce code.

public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     int i = 0, lines = 1;
     int[] items = new int[100];
     int total = 0;
     System.out.println("Enter the items with its price");

     while(true){
          String InputTxt = scan.nextLine();
          if (InputTxt.equals("stop"))
              break;
          else{           
              try{
                 items[i] = Integer.parseInt(InputTxt);
                 i++;
              }catch(Exception e){
                 System.out.println("Please enter a number");
              }
          }

     } 

 }
1
Roshana Pitigala 20 avril 2017 à 17:05

Votre problème est cette ligne: items[i] = scan.nextInt(); parce que vous essayez d'obtenir un entier alors que l'entrée est une chaîne stop

MODIFIER une solution possible est d'obtenir vos données sous forme de chaîne et de vérifier si elles sont stop ou non et sinon d'essayer de les analyser en entier comme le code ci-dessous:

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
int i=0, lines=1;
int[] items = new int[100];
int total = 0;
System.out.println("Enter the items with its price");
while(true)
    {
    i=i+1;
     String str = scan.nextLine()
     if ("stop".equals(str))
         break;
     else
         {
         items[i] =  Integer.parseInt(str)
         }
    }
}
-1
pouyan 20 avril 2017 à 17:04

En plus d'autres réponses, je voudrais vous conseiller de changer la boucle de

while(true)

À

//first you need to remove the local variable i 
for(int i = 0; i < items.length; ++i)

L'utilisation de cette approche vous aidera à éviter IndexOutOfBoundsException lorsque les utilisateurs saisissent plus de 100 valeurs entières.

1
Jie Heng 20 avril 2017 à 17:17