2017-10-04 1 views
-2

In diesem Programm wollte ich schreiben: es sollte nur positive Zahlen von Benutzer über Scanner erhalten und wenn sie positiv sind - es muss sie in die 'Liste' Array-Liste hinzufügen. Aus irgendeinem Grund fügt es nicht die erste Zahl hinzu, wenn der Benutzer es hinzufügt, sondern nur die zweite (und es läuft so in jeder while-Schleife).Scanner mit ArrayList

Kann jemand bitte helfen? Danke! :-)

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

Sie verbrauchen den ersten Integer-Wert in Ihrem 'while' Zustand. – Mena

+0

'while ((Wert = INPUT.nextInt())> 0)' wo 'Wert' vom Typ' int' ist und dann 'list.add (Wert);' – XtremeBaumer

+0

Mit nextLine() wird der Puffer gelöscht, so dass Die nächste Eingabe, die Sie nach einem Fehler gelesen haben, ist die neue Eingabe, die nach der fehlerhaften Zeile steht, die Sie eingegeben haben. – VedX

Antwort

1

Sie die Eingabe tatsächlich einnehmen zweimal

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

Änderung es

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

jetzt sollte es funktionieren;

0

Fehler in while-Schleife von Ihnen:

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

Sie erste Ganzzahl scannen und zweiten Zugabe wird, wie oben.

Hier gehen Sie mit dem Arbeitscode:

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

Danke allen :) es half allot – Ofer

+0

Können Sie diese Antwort akzeptieren, indem Sie auf den Pfeil neben der Antwort klicken. Dies wäre hilfreich für die Gemeinschaft. :) –