2016-11-25 3 views
-1

Ich bin in einem Problem, wo ich einen Code haben, der Sie mehrere Ganzzahlen eingeben können und dann nach einer bestimmten Ganzzahl in diesen Ganzzahlen suchen können. Das Problem, das ich habe, ist, wo die Eingabe eine Ganzzahl und dann ein Wort ist. (Beispiel: 4 Java) Ansonsten funktioniert der Code wie vorgesehen, aber bei der spezifischen Antwort eines int dann liest ein Wort immer noch als korrekte Eingabe.Problem mit akzeptablen Eingabe

public static void main(String[] args) { 
Random rng = new Random(); 
boolean Finished = true; 
boolean Försök = true; 
int Mitt = rng.nextInt(100)+1; 
int Head; 

while (Finished == true){ 
System.out.println(Mitt); 
    String S = JOptionPane.showInputDialog("Var god gissa vilket heltal jag      valt! \n Du kan skriva in max 5 heltal varje gissning!"); 
// allows you to enter 5 integers 
    if (S == null|| (S != null && ("".equals(S)))){ 
System.exit(0); 
} 

    Scanner Svar = new Scanner(S); 
if (Svar.hasNextInt() == false || Pattern.matches("[a-öA-Ö ]+", S)) { 

    JOptionPane.showMessageDialog(null, "Error, var god skriv in ett heltal"); 
    Mitt = rng.nextInt(100)+1; 

} 
else { 


ArrayList<Integer> mylist = new ArrayList<>(); 

while (Svar.hasNextInt() && Finished == true){ 

    Head = Svar.nextInt(); 

    mylist.add(Head); 
     if (mylist.size()>5){ 
    JOptionPane.showMessageDialog(null, "Tyvärr skrev du in mer än 5 heltal! \n Var god mata in igen!"); 
    Försök = false; 
    break; 
    } 

    System.out.println(mylist); 

    if (Head>100 || Head<0){ 
    JOptionPane.showMessageDialog(null, "Tyvärr skrev du in ett heltal som var över 100 eller mindre än 0! \n Var god mata in igen!"); 
    Försök = false; 
    break; 
    } 


if (mylist.contains(Mitt)){ 
    JOptionPane.showMessageDialog(null, "ayo du svarade rätt med " + Mitt); 
    System.exit(0); 

} 

    else if (Försök == true){ 
    JOptionPane.showMessageDialog(null, "Tyvärr svarade du fel! du kan försöka igen! rätt svar är " + Mitt); 

    } 

    } 
    } 



    } 





    } 
    } 
+0

Also, was sollte es tun, wenn Sie "4 Java" eingeben? Es wäre vernünftig, einen Fehler zu machen und zu beenden. – Aaron

Antwort

0

Wohin denken Sie, dass Sie diese Gültigkeit prüfen?
Sie prüfen nur, ob das erste Token eine Nummer ist und danach einfach gelesen, bis keine Zahlen mehr gefunden werden. Solange Ihr erstes Token eine Zahl ist, wird es von Ihrem Code als gültige Eingabe angesehen.

Verwenden Sie das nächste Mal bitte einen Debugger. Solche Fragen sind hier nicht Thema.

Verwandte Themen