2016-06-28 6 views
1

Ich mache ein Programm, das nach deinem Alter fragt, aber es funktioniert nicht. Zuerst fragt es, wie alt du bist, mit dem Scanner-Modul und setzt dein Alter in eine Variable. Ich möchte am Ende mit Ihrem Alter zu Ausgang, aber es braucht einen int, also wenn Sie einen String oder etwas setzen sonst gibt es einen Fehler:Wie kann ich erreichen, dass ein Programm eine Variable innerhalb einer Schleife erhält? (java)

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at org.asking.age.main(asking.java:18) 

Ich will ihn anstelle des Fehlers sagen lassen): bitte Geben Sie nur eine Zahl zwischen 1 und 100 ein, wenn Sie etwas anderes als eine Zahl zwischen 1 und 100 eingeben. Und wenn Sie eine falsche Nummer eingeben, muss sie "neu starten", und wenn es eine gute Nummer ist, muss sie enden.

habe ich versucht, eine Schleife:

(i = das Alter vom Scanner)

while(i>100 || i>0) 
     { 
      if (a < 100 || a > 0) { 

       System.out.println("please only enter a number between 1 and 100"); 
       System.out.println("how old are you?"); 
       Scanner s = new Scanner(System.in); 
       int a = s.nextInt(); 

     { 
System.out.println("you are " + a + "years old") 
    }}}}} 

aber am Anfang der 'if' kann nicht die eine Variable erreichen. Gibt es einen anderen/irgendeinen Weg dies zu tun?

Danke für die Hilfe, und sorry für mein schlechtes Englisch :)

Dank @TheLostMind ich jetzt helfen, diesen Code bekam:

, aber ich verstehe nicht, wie die if (> 0 & & verwenden < 100 und die Spiele funktionieren nicht

public static void main(String[] args) { 
    System.out.println("how old are you?"); 

    Scanner h = new Scanner(System.in); 
    String a= h.nextLine(); 

    String str = a; 

    String matches=("\\d+"); 

    Integer.parseInt(a); 



    { 
do { 


    System.out.println("please only enter a number between 1 and 100"); 
    System.out.println("how old are you?"); 
    h.nextLine(); 

} while(a>0 && a<100); } 
} 
} 
+0

definieren Sie Ihren Scanner außerhalb der While-Schleife –

+3

Decalre sowohl die 'Scanner' und' int a' außerhalb der Schleife. – TheLostMind

+0

Ihr Problem wird erstellt, weil Sie eine Ganzzahl aus dem Scanner gelesen haben und keinen numerischen Wert eingegeben haben. Mein Vorschlag wird sein, Zeile zu verwenden, dann zu überprüfen, ist es eine gültige Zahl oder etwas anderes melden Fehler oder gehen Sie weiter, und kleiner Seitenkommentar, 'i> 100 || i> 0' kann als 'x> 0' umgeschrieben werden, – user902383

Antwort

1

First of all, start by decalring both Scanner and int a outside the loop.

Next, use scanner#nextLine() to read an entire line of input into a String.

Then use String#matches("\\d+") and Integer.parseInt(inputString) to parse the int as a number.

Then use if(>0 && <100) check.

Es gibt Methoden in den Scanner Klasse (hasNextInt()), die auf einen Int warten, aber das ist nicht, was Sie suchen.

1

Sie brauchen so etwas wie dies zu tun:

Declare Scanner and other Variable 

do { 
    System.out.println("please only enter a number between 1 and 100"); 
    System.out.println("how old are you?"); 

    read variable value from Scanner 
} while(check your condition on variable); 

Hoffnung, das hilft.

1

Die Fragen in System.out.print und dem Scanner sollten sich außerhalb der Schleife befinden. Überprüfen Sie die While-Schleife, es sagt> 100 statt 100.

Verwandte Themen