下面是我的动作类,程序可以运行,但有时当你按下按钮时,它会持续显示按下状态,结果无法显示在JTextField
?
public class SsqAction implements ActionListener{
String luckNum="";
private JTextField luckField;
public SsqAction(JTextField luckField){
this.luckField=luckField;
}
public void actionPerformed(ActionEvent event){
int[] a={0,0,0,0,0,0,0};
int tag=0;
for(int k=0;k<6;){
double i=Math.random()*33;
int temp=(int)Math.ceil(i);
a[k]=temp;
for(int j=0;j<k;j++){
if(a[j]==a[k]){
tag=1;
break;
}
}
if(tag==0){
k++;
}
}
double j=Math.random()*16;
int b=(int)Math.ceil(j);
a[6]=b;
for(int i=0;i<7;i++){
luckNum=luckNum+a[i]+" ";
}
luckField.setText(luckNum);
}
}
答案 0 :(得分:3)
在你的for循环中
for(int k=0;k<6;)
您不会增加k
。你在这里增加它:
if(tag==0){
k++;
}
但是,tag
可能会设置为1
:
if(a[j]==a[k]){
tag=1;
break;
}
(break
打破内循环,而不是外循环)
现在,tag
永远是1
,k
永远不会增加→无限循环。
提示:使用调试器,他是你最好的朋友。