java:for循环不显示所有输出数字

dba5bblo  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(466)

我试图创建一个for循环程序,用户在其中输入起始数字和结束数字,然后按下按钮来显示值。例子:

但是,当我运行程序并按下按钮时,它只显示结束数字,如下所示:

到目前为止,我的代码是这样的:到目前为止,我还没有找到任何逻辑错误。

private void valuesButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         

        int starting;
        starting = Integer.parseInt(startingInput.getText());

        int ending;
        ending = Integer.parseInt(endingInput.getText());

        for (int i = starting; i <= ending; i++){
            outputField.setText(i + "");
        }
    }
v440hwme

v440hwme1#

您错过了连接所有数字的步骤:

StringBuilder text = new StringBuilder();
    for (int i = starting; i <= ending; i++){
      text.append(i).append(" ");
    }
    outputField.setText(text.toString());
qncylg1j

qncylg1j2#

下一行正在替换的旧内容 outputField :

outputField.setText(i + "");

你应该这样写:

outputField.setText(outputField.getText() + i + " ");

i、 e.附加 i + " " 到旧的内容 outputField .

laik7k3q

laik7k3q3#

你的电话 setText 正在覆盖输出字段中的字符串;最后的决定是什么时候 i == ending ,所以结尾的数字就是你看到的。您想要的是将新的数字连接到上一个输出字符串。
一种解决方案是将输出存储为字符串,在循环中附加每个数字,然后将文本设置为输出字符串。

String output = "";

for (int i = starting; i <= ending; i++) {
    output += i + " ";
}

outputField.setText(output);
nnt7mjpx

nnt7mjpx4#

for (int i = starting; i <= ending; i++){
        outputField.setText(i + "");
    }

将输出设置为一个数字,然后设置下一个,然后设置下一个。。。发生得如此之快,你所看到的都是最后一次。
试试这个:它累积到目前为止的输出,并使用它来显示。

String s = "";
    for (int i = starting; i <= ending; i++) {
        s = s + i + " ";
        outputField.setText(s);
    }

这仍在输出中间结果,因此有点浪费,而且仍然发生得太快,无法看到。但它最接近你的原作,所以我就这样留下了。您可以在循环结束后将settext调用移动到,以仅输出最终结果。
其他答案提到stringbuilder,但我没有;我不敢一下子介绍太多新概念。stringbuilder在性能很重要的情况下发挥作用,但这在这里并不适用,我认为“显而易见”是入门练习的最佳选择。

相关问题