2017-10-18 8 views
-2

Wie lautet die richtige Syntax zum Abrufen von Ganzzahlen vom Scanner, wenn sie einige Kriterien erfüllen und ArrayList zuweisen? Es sollte eine Schleife machen und die Eingaben erhalten, bis wir "-1" einfügen. Es stoppt, dann füge ich "q" ein, aber ich brauche es, um mit einer bestimmten Ganzzahl zu arbeiten.Java-Scanner mit Ganzzahlvalidierung

   Scanner sc = new Scanner(System.in); 
       while (-99 !== sc.nextLine() && sc.hasNextInt()) 
       { 
       //do something Whi 
       } 
+3

Wie kann ein Scanner-Objekt gleich einem negativen "int" sein? –

+0

Eingabe von einem Scanner sollte –

+0

Dann bitte zeigen Sie mir, wie es richtig geht –

Antwort

0

Dies wird eine Schleife durchlaufen, bis -1 angetroffen wird, und fügen Sie die Elemente der Arraylist hinzu. Lassen Sie mich wissen, wenn Sie Hilfe dabei brauchen.

List<Integer> list = new ArrayList<>(); 
Scanner scanner = new Scanner(System.in); 

// keep looping until -1 is encountered 
while (true) { 
     int temp = scanner.nextInt(); 
     if (temp == -1) { 
      break; 
     } 
     list.add(temp); 
} 

// Printing the array list 
System.out.println(list); 

// closing the scanner is important 
scanner.close(); 
0

Ich bin nicht sicher genau das, was Ihre Anforderungen sind aber wie über

Scanner sc = new Scanner(System.in); 
while (true) 
{ 
    int numEntered = sc.nextInt(); 
    if (numEntered == -1) { 
     break; 
    } 
    // do something 
} 
+0

Vielen Dank! Ich habe verstanden, was ich falsch gemacht habe! Das hat für mich funktioniert! –

0

Sie wollen wahrscheinlich, dies zu tun:

Scanner sc = new Scanner(System.in); 
int num; 
do{ 
    while (!sc.hasNextInt()){ 
     sc.next(); 
    } 
    num = sc.nextInt(); 
}while(num!=-1) 

hoffe, das hilft!

-1

sc wenn ein Verweis auf ein Objekt der Scanner-Klasse und nicht compare mit int-Objekt. Sie müssen den Wert von next int in Ihrer while-Schleife überprüfen