[英]“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.