2016-04-06 9 views
0

die folgende Methode:Kombinieren hasNextInt und Wert größer/kleiner als X prüft

public void localsetValue(String UserInput) 
{ 
    System.out.println("Enter New Value:"); 
    while (!console.hasNextInt()){ 
      console.next(); 
      System.out.println("Must be a number."); 
     } 
     tempInt = console.nextInt(); 
     console.nextLine(); 



    while (tempInt <0) { 
     System.out.println("Value must be positive."); 
     tempInt = console.nextInt(); 
    } 
    SetSpecificValue(UserInput.toLowerCase(), tempInt); 
} 

Die erste while-Schleife überprüft, dass der Benutzer eine gültige int eintritt; das funktioniert gut.

Die zweite While-Schleife prüft, ob der Benutzer eine positive Zahl eingibt; das funktioniert auch, aber an diesem Punkt können sie einen Buchstaben eingeben und es wird die Ausnahme auswerfen.

Noch neu in Java, gibt es eine Möglichkeit, diese beiden Prüfungen zu kombinieren?

+0

Mehr von einem logischen Standpunkt. Sie möchten die ganze Zahl lesen, überprüfen, dass es positiv ist (Ihr Code sagt nicht-negativ), dann gehen Sie zurück zu überprüfen, das nächste Token ist eine ganze Zahl mit nextInt() –

Antwort

3

Verwenden Sie einfach die gleiche while Schleife und Sie werden in Ordnung sein.

Hier setzen wir die Schleife fort, wenn der Benutzer etwas anderes eingibt als int ODER wenn der eingegebene int negativ ist.

int tmpInt = 0; 
boolean flag = false; 
while ((flag = !console.hasNextInt()) || (tmpInt = console.nextInt()) < 0){ 
    if (flag) { 
     console.next(); 
     flag = false; 
    } 
    System.out.println("Value must be a positive integer !"); 
} 
+0

Ich vermute, ich brauche noch die console.next() und console.nextLine(); Teile? Dies funktioniert immer noch nicht ganz richtig. Wenn ich einen Buchstaben eintippe, wird die Fehlermeldung ausgegeben. Wenn ich einen negativen Wert eingegeben habe, wird die Fehlermeldung nicht angezeigt und die nächste Eingabe, gültig oder ungültig, wird immer als ungültig zurückgegeben. – NuMs

+0

Funktioniert perfekt! Danke :) – NuMs

+0

@NuMs Gern geschehen :) –

0

So ähnlich?

public void localsetValue(String UserInput) 
{ 
    tempInt = -1; 
    System.out.println("Enter New Value:"); 
    while (!console.hasNextInt() || (tempInt = console.nextInt()) <0){ 
      console.next(); 
      System.out.println("Must be a positive number."); 
     }  
     console.nextLine(); 
    SetSpecificValue(UserInput.toLowerCase(), tempInt); 
} 
1

Sie benötigen nur eine Schleife, müssen aber die beiden Abbruchbedingungen kombinieren (ist eine Zahl, ist positiv).

int value = -1 
do { 
    if(console.hasNextInt()){ 
     value = console.nextInt(); 
    } else { 
     console.next(); 
    } 
} while(value < 0) 
Verwandte Themen