0

下面是我的动作类,程序可以运行,但是有时候当你按下按钮时,它一直显示按下状态,结果不能显示在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);

    }

}
4

1 回答 1

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永远1k永远不会增加→无限循环。

提示:使用调试器,他是你最好的朋友。

于 2013-07-28T08:27:47.873 回答