簡體   English   中英

“ For”循環停止正常工作(或者我做錯了什么)

[英]“For”-loop ceases to work properly (or I'm doing something wrong)

因此,這里的問題非常簡單; 我有一個“ 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 ++);”,則只有最后一個標簽[i](因此標簽[11])的文本更改為“文本更改”,而另一個標簽[i]都保持不變,因此保持不變。

因為i <11,所以這很奇怪,因此label [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++) {

首先,您的for循環正在終止

for( i = 0 ; i  < 11 ; i ++); // replace this line with

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

//您的邏輯}

第二件事,如果您想將最后一個標簽[11]更改為“ Text Changed”,請將此條件放入for循環中-

If( i ==11){
    coloreWords.labels[i].set text("Text Changed");

}但是,您應該仔細檢查數組索引,如果它確實是一個11索引數組,則代碼應運行到i <12。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM