2017-10-04 6 views
-2

Dans ce programme, je voulais écrire ceci: il ne devrait obtenir que des nombres positifs de l'utilisateur via le scanner et s'ils sont positifs - il doit les ajouter à la liste de tableaux 'list'. Pour une raison quelconque, il n'ajoute pas le premier nombre lorsque l'utilisateur l'ajoute mais seulement le second (et il fonctionne comme ça dans chaque boucle while).Scanner avec ArrayList

Quelqu'un peut-il vous aider? Merci! :-)

import java.util.ArrayList; 
import java.util.Scanner; 
import java.util.ArrayList; 
public class Second_EX_Advanced_2 { 
    public static void main(String[] args) { 
     ArrayList<Integer> list = new ArrayList<Integer>(); 
     System.out.println("Please enter a positive number ... "); 
     Scanner INPUT = new Scanner(System.in); 
     while (INPUT.nextInt() > 0) { 
      list.add(INPUT.nextInt()); 
      System.out.println(list); 
     } 
     INPUT.close(); 
    } 
} 

*

+2

Vous consommez la première valeur entière dans votre 'état while'. – Mena

+0

'while ((value = INPUT.nextInt())> 0)' où 'value' est de type' int', puis 'list.add (value);' – XtremeBaumer

+0

L'utilisation de nextLine() effacera le tampon, de sorte que la prochaine entrée que vous lisez après une erreur va être l'entrée fraîche qui est après la mauvaise ligne que vous avez entré. – VedX

Répondre

1

vous prenez en fait l'entrée deux fois

while (INPUT.nextInt() > 0) { //first time here 
     list.add(INPUT.nextInt()); //second time here 
     System.out.println(list); 
    } 

changement à

int n; 
while ((n=INPUT.nextInt()) > 0) { //first time here 
     list.add(n); //second time here 
     System.out.println(list); 
    } 

maintenant il devrait fonctionner correctement;

0

erreur se trouve dans la boucle pendant que la vôtre:

while (INPUT.nextInt() > 0) { 
      list.add(INPUT.nextInt()); 
      System.out.println(list); 
     } 

à numériser premier nombre entier et en ajoutant une seconde, comme ci-dessus.

Ici vous allez avec le code de travail:

import java.util.ArrayList; 
import java.util.Scanner; 
import java.util.ArrayList; 
public class Second_EX_Advanced_2 { 
    public static void main(String[] args) { 
     ArrayList<Integer> list = new ArrayList<Integer>(); 
     System.out.println("Please enter a positive number ... "); 
     Scanner INPUT = new Scanner(System.in); 
     int num; 
     while ((num = INPUT.nextInt()) > 0) { 
      list.add(num); 
      System.out.println(list); 
     } 
     INPUT.close(); 
    } 
} 
+0

Merci à tous :) ça a aidé à allouer – Ofer

+0

Pouvez-vous accepter cette réponse en cliquant sur la flèche à côté de la réponse. Cela serait utile à la communauté. :) –