gpt4 book ai didi

java - "For"-循环停止正常工作(或者我做错了什么)

转载 作者:行者123 更新时间:2023-12-01 18:25:35 24 4
gpt4 key购买 nike

所以这里的问题相当简单;我有一个“for”循环无法正常工作。 “for”循环位于第二个类的末尾,在“generateBlock()”方法中。这个“for”循环应该将标签的文本从数组 labels[] 更改为“文本已更改”。

我遇到的问题是,如果我设置“for (i = 0; i <12; i++);”,我会收到越界错误,如果我设置“for ( i = 0; i <11; i++);",我没有那个越界错误。这很奇怪,因为数组的索引实际上由 0 到 11 组成。但是,这甚至不是主要问题。

主要问题是,如果我设置“for (i = 0; i < 11; i++);”,则只有最后一个 labels[i] (因此 labels[11])的文本更改为“文本已更改”而其他标签[i]都保持不变,因此没有变化。

这很奇怪,因为 i < 11 所以 labels[11] 应该是唯一保持不变的,但在这种情况下,它显然是相反的,我不知道为什么。我也不知道为什么如果我设置 i < 12,我会收到越界错误,因为我很确定数组的索引由 0 到 11 组成。

如果我手动设置“coloredWords.labels[0].setText(“文本已更改”);”然后复制粘贴此行以获取它确实有效的所有其他值。

public class ColoredWordsExperiment {
JFrame frame;
JLabel[] labels;
ButtonHandler buttonHandler;
int i;

ColoredWordsExperiment(){
frame = new JFrame ();
button1 = new JButton("Matching");

labels = new JLabel[12];
for (i = 0; i < 12; i++) {
labels[i] = new JLabel("label");
labelContainer.add(labels[i]);
}

buttonHandler = new ButtonHandler(this);
button1.addActionListener(buttonHandler);
}

public static void main(String[] arg) {
new ColoredWordsExperiment():
}

}

-

class ButtonHandler implements ActionListener {
ColoredWordsExperiment coloredWords;
public ButtonHandler(ColoredWordsExperiment coloredWords) {
this.coloredWords = coloredWords;
}

@Override
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("Matching")) {
generateBlock();
}
}

public void generateBlock(){
int i = 0;
for (i = 0; i < 11; i++); {
coloredWords.labels[i].setText("Text changed");
}
}

}

最佳答案

您的 for 循环甚至不会执行一次,因为您已用分号 (;) 终止了它。去掉for循环后面的分号:

    for (i = 0; i < 11; i++); {

应该是

    for (i = 0; i < 11; i++) {

关于java - "For"-循环停止正常工作(或者我做错了什么),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com