gpt4 book ai didi

java - 更改 Action 监听器中的变量数据

转载 作者:行者123 更新时间:2023-11-30 05:40:57 26 4
gpt4 key购买 nike

我创建了一个包含 Action 监听器的按钮。我在 Action 监听器之外声明了该变量。但我无法更改 Action 监听器内的变量内容。我总是收到错误:从内部类引用的局部变量必须是最终的或有效的最终

如何解决这个问题?

我希望代码部分对您来说足够好。

我已经尝试过:

final int player = 1;

但是我无法用final改变内容。

public void Game(char[] gamefield) { 
int player = 1;
TickTackToeSpieleablauf window = new TickTackToeSpieleablauf();
btnSpielebrett1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Field1
int field = 0;
boolean geklappt = false;
geklappt = window.playervsplayer(gamefield, field, player);
System.out.println(gamefield[0]);
if (geklappt && player == 1){
gamefield[field] = 'x';
player = 2; <----- HERE I GET THE ERROR
}else if(geklappt && player == 2){
gamefield[field] = 'o';
}else if(!geklappt){
if (gamefield[0] != '1' && gamefield[1] != '2' &&gamefield[2] != '3' && gamefield[3] != '4' &&gamefield[4] != '5' && gamefield[5] != '6' &&gamefield[6] != '7' && gamefield[7] != '8' &&gamefield[8] != '9'){
//Gamefield full, array clear;
gamefield[0] = '1';
gamefield[1] = '2';
gamefield[2] = '3';
gamefield[3] = '4';
gamefield[4] = '5';
gamefield[5] = '6';
gamefield[6] = '7';
gamefield[7] = '8';
gamefield[8] = '9';
}
}else{
System.out.println("Feld bereits belegt.");
}
}

最佳答案

Ypu 可以为您的 player 值提供一个包装类,例如:

class Player {
int value = 1;
}

并使用对该类的引用而不是原始类型:

final Player player = new Player();

...

if (geklappt && player.value == 1){
gamefield[field] = 'x';
player.value = 2;
}

关于java - 更改 Action 监听器中的变量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com