【问题标题】:Do-while loop inside in for loop在for循环中执行while循环
【发布时间】:2017-12-02 19:08:59
【问题描述】:

我有一个问题,我无法用 Java 循环来解决课堂练习。我需要编写一个程序来询问 10 个随机乘法表问题。在 10 个问题结束时,它必须向我展示第一次正确的问题。如果一个问题第一次不正确,它必须显示失败数字的表格,然后重新制定问题。

我遇到的问题是,在这 10 个问题的 for 中,我有一个 if -else 用于正确的问题,而在 else 中,我有一个 do-while 来重新制定问题。问题是,当我未通过问题时,程序会按照应有的方式重新编写它,但如果我输入正确的答案,do-while 循环会关闭 for 并停止提问。

练习中禁止使用数组。

代码如下:

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());

这里也是 pastebin 中的类:

程序 > https://pastebin.com/imAQBuRX

方法> https://pastebin.com/GJdyrnRv

【问题讨论】:

    标签: java loops for-loop if-statement do-while


    【解决方案1】:

    看起来您在两个循环中都使用了 i。当 do-while 循环执行时,它以 i 为 10 结束,因此当检查 for 循环条件时,i=10 并且 for 循环结束。尝试使用另一个变量 - 在内部循环中使用 j 是传统的 - 来避免这种情况。

    例如,这里有一组嵌套的带有正确变量名的 for 循环:

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

    【讨论】:

    • 它现在工作正常。非常感谢您的宝贵时间。问候。
    最近更新 更多