2017-03-03 1 views
0

Ich bin nicht sicher, warum dieser Code nicht funktioniert.Was fehlt mir hier? Looping mit Dialogfeldern

Ich nehme an, ein anderes Dialogfeld erscheint, nachdem der Benutzer Ja oder Nein wählt, aber wenn ich das Programm ausführe, fragt es nach y oder nein und dann passiert nichts danach.

Irgendwelche Ideen, was ich tun muss?

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int max = 0; 
    int min = Integer.MAX_VALUE; 
    String number; 
    boolean yn = true; 

    do { 
     number = JOptionPane.showInputDialog("Please enter a number"); 

     int num = Integer.parseInt(number); 

     if (num > max) { 
      max = num; 
     } 

     if (num < min) { 
      min = num; 
     } 
     System.out.println(min + " " + max); 

     JOptionPane.showInputDialog("Would you like to enter another number? (y/n)"); 
     String ny = in.nextLine(); 

     if (ny.equals("n")) { 
      yn = false; 
     } 

     JOptionPane.showInputDialog(ny); 


    } while (yn == true); 

    JOptionPane.showMessageDialog(null, "The max number is " + max + " and the mininum number is " + min); 

} 

}

+0

Es wartet auf Eingabe vom Scanner. Ich nehme an, das ist nicht das, was Sie vorhaben. – shmosel

Antwort

0

Das Programm stoppt auf

String ny = in.nextLine(); 

für die Eingabe warten, von System.in basierend auf dem Scanner in der ersten Zeile definiert.

Wenn Sie auf der Konsole 'n' eingeben und Enter drücken, fährt das Programm fort und zeigt das nächste Dialogfeld an.

Ich denke, Sie dazu sagen:

String ny = JOptionPane.showInputDialog("Would you like to enter another number? (y/n)"); 
0

Das Problem, das Sie haben, ist, dass Sie nicht die Eingabe von der Platte sind zu akzeptieren und stattdessen es von der Konsole nehmen. Um dies zu lösen, ny auf die Eingabe von dem JPane gleich zu sein, etwa so:

String ny = JOptionPane.showInputDialog("Would you like to enter another number? (y/n)"); 

Allerdings gibt es ein weiteres Problem, das diese Linie:

JOptionPane.showInputDialog(ny); 

Es schafft eine Scheibe, dass Sie brauchen nicht, dass y oder n angezeigt wird und keine Eingabe akzeptiert. Diese Zeile muss nicht vorhanden sein, also sollten Sie sie entfernen. Ihr Code funktioniert ansonsten gut.

Verwandte Themen