Java 有人能识别出什么';下面的代码怎么了?我正试着做一个抽搐 @覆盖 已执行的公共无效操作(操作事件){ 按钮电流; 整圈=0; 对于(inti=0;i

Java 有人能识别出什么';下面的代码怎么了?我正试着做一个抽搐 @覆盖 已执行的公共无效操作(操作事件){ 按钮电流; 整圈=0; 对于(inti=0;i,java,Java,您使用的是按钮。水平和垂直长度,但您的按钮数不同于您的列/行数。事实上,此数字是列数乘以行数。请尝试在此数字上使用sqrt 此外,还应使用布尔值,而不是整数变量turn,并在每次turn后写入:turn=!turn 编辑:此外,我不明白你为什么要使用,而你有三个循环,但你不需要任何循环。如果我理解正确,你想要的是根据turn的值将单击按钮的文本设置为X或O。单击的按钮由事件返回。getSource()。因此,方法应该是: @Override public void actionPerfor

您使用的是
按钮。水平和垂直长度
,但您的按钮数不同于您的列/行数。事实上,此数字是列数乘以行数。请尝试在此数字上使用sqrt

此外,还应使用布尔值,而不是整数变量
turn
,并在每次turn后写入:
turn=!turn


编辑:此外,我不明白你为什么要使用
,而

你有三个循环,但你不需要任何循环。如果我理解正确,你想要的是根据
turn
的值将单击按钮的文本设置为X或O。单击的按钮由
事件返回。getSource()
。因此,方法应该是:

   @Override
public void actionPerformed(ActionEvent event){
    JButton current;
    int turn=0;
    for(int i=0; i< buttons.length;i++){ 
        for(int j =0; j<buttons.length; j++){
            while(event.getSource().equals(buttons[i][j])){
            if(turn==0){
                current=buttons[i][j];
                current.setText("X");//current sets the text i,j to x.
                turn++;
                }
            else if(turn==1){
            current=buttons[i][j];
            current.setText("O");
            turn--;

                }
            }
        }//end j
    }//end i
}//end actionperformed.
请注意,如果该回合只能有两个值,则应将其设置为布尔值:

public void actionPerformed(ActionEvent event) {
    JButton clicked = (JButton) event.getSource();
    if (turn == 0) {
        clicked.setText("X");
        turn++;
    }
    else {
        clicked.setText("O");
        turn--;
    }
}

你试过调试你的代码吗?很可能是无限循环@
while(event.getSource().equals(buttons[i][j]))
添加一个
syso
语句,查看循环是否存在。是否有更好的方法编写此语句?@Igor Konoplyanko,调试不起作用程序必须由任务管理器终止。同意此答案,不需要循环
public void actionPerformed(ActionEvent event) {
    JButton clicked = (JButton) event.getSource();
    clicked.setText(turn ? "X" : "O");
    turn = !turn;
}