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;
}