2017-12-02 8 views
0

Ich habe ein Problem, das ich nicht mit einer Java-Schleife für eine Klassenübung lösen kann. Ich muss ein Programm machen, das 10 Fragen von zufälligen Multiplikationstabellen stellt. Am Ende der 10 Fragen muss es mir die Fragen zeigen, die beim ersten Mal richtig waren. Falls eine Frage beim ersten Mal nicht richtig ist, muss sie die Tabelle der fehlerhaften Nummer anzeigen und dann die Frage neu formulieren.Do-while-Schleife innerhalb von for-Schleife

Das Problem, das ich habe, ist, dass innerhalb der für die 10 Fragen habe ich eine wenn -else für die richtigen Fragen und innerhalb der sonst die tun-während die Fragen neu zu formulieren. Das Problem ist, wenn ich die Frage scheitere, das Programm reformuliert es wie es tun sollte, aber wenn ich die richtige Antwort gebe, schließt die Do-while-Schleife das for und hört auf, Fragen zu stellen.

Die Verwendung von Arrays ist in der Übung verboten. Hier

ist der Code:

for (int i=1; i<=10; i++) { 
    Tablas operacion=new Tablas(); 

    int pregunta = Integer.parseInt(JOptionPane.showInputDialog(null, operacion.getNumeroPregunta()+"\n"+operacion.multiplicacion())); 
    if (pregunta == operacion.resultado()) { 
     Tablas.comprobadorPreguntas(true); 
    } 
    else { 
     do { 
     String salida=""; 
     for (i=1; i<=10; i++) { 
      salida+=operacion.getMultiplicando() + "x"+i+"=" + (operacion.getMultiplicando() * i) + "\n"; 
     } 
     JOptionPane.showMessageDialog(null, salida); 
     pregunta = Integer.parseInt(JOptionPane.showInputDialog(null, operacion.getNumeroPregunta()+"\n"+operacion.multiplicacion())); 
     } while(pregunta != operacion.resultado()); 
     Tablas.comprobadorPreguntas(false); 
    } 
} 

JOptionPane.showMessageDialog(null, "Preguntas acertadas a la primera: "+Tablas.getContador()); 

Hier sind auch die Klassen in Pastebin:

Programm>https://pastebin.com/imAQBuRX

Methoden>https://pastebin.com/GJdyrnRv

Antwort

1

Es sieht aus wie du, ich in beide verwenden deiner Schleifen. Wenn die do-while-Schleife ausgeführt wird, endet sie mit i als 10, und wenn die for-loop-Bedingung überprüft wird, wird i = 10 und die for-Schleife wird beendet. Versuchen Sie, eine andere Variable zu verwenden - mit j in der inneren Schleife ist traditionell - um dies zu vermeiden.

Zum Beispiel, hier ist ein verschachtelter Satz von for-Schleifen mit dem richtigen Variablennamen:

for(int i = 0; i < 10; i++){ 
    for(int j = 0; j < 10; j++;){ 
     ... 
    } 
} 
+0

Sein funktioniert jetzt. Vielen Dank für Ihre Zeit. Grüße. – JoshHZR

+0

Gern geschehen! Ich bin froh, dass es funktioniert. – Keara