Java ';未检测到变量上的字符==';符号

Java ';未检测到变量上的字符==';符号,java,eclipse,equality,tic-tac-toe,Java,Eclipse,Equality,Tic Tac Toe,我在这里花了几个小时试图解决这个问题,但没有成功。 我正在做一个基于2D数组的Tic-Tac-Toe游戏,我使用了两个“for”将“-”符号添加到数组的每个位置。 现在我正在尝试一种验证方法,以防止玩家将其“X”放在被占用或无效的位置。 当我打印电路板/阵列时,每个位置上都有“-”,但当我尝试执行“如果该位置有“-”这是一个有效的移动”时,代码会不断返回那里没有“-”,即使它有。 “jog”和“tab”是因为我使用的是不同的类。 我的调试也没有显示从第一个println开始的任何变量,我不知道为

我在这里花了几个小时试图解决这个问题,但没有成功。 我正在做一个基于2D数组的Tic-Tac-Toe游戏,我使用了两个“for”将“-”符号添加到数组的每个位置。 现在我正在尝试一种验证方法,以防止玩家将其“X”放在被占用或无效的位置。 当我打印电路板/阵列时,每个位置上都有“-”,但当我尝试执行“如果该位置有“-”这是一个有效的移动”时,代码会不断返回那里没有“-”,即使它有。 “jog”和“tab”是因为我使用的是不同的类。 我的调试也没有显示从第一个println开始的任何变量,我不知道为什么

public static void main(String[] args) {
    
    Tabuleiro tab = new Tabuleiro();
    Jogador jog = new Jogador();
    Computador comp = new Computador();
    
    tab.inicializarTabuleiro();
    tab.mostraTabuleiro();
    
    System.out.println("Bem vindo ao Jogo da Velha!");
    System.out.println("Escolha a dificuldade desejada de 1 a 3");
    Scanner dificuldade = new Scanner(System.in);
    if (dificuldade.nextInt() == 1){

        for (int i = 1; i <= 9; i++){
            Scanner scan = new Scanner(System.in);
            System.out.println("Escolha uma posição(1-9)");
            int jogada = scan.nextInt();
            jog.converteJogada(jogada); //this code converts int from keyboard to a position on array
            jog.verificaJogada(jogada); //this code is the problem
            System.out.println(jog.row); //used this to check if position is correct, it is
            System.out.println(jog.col);//same from above
            System.out.println(tab.mat[jog.row][jog.col]); //used to print the position to see if '-' it was there, it was
            System.out.println(jog.valid); //to see if '-' is being confirmed or not
    } 
publicstaticvoidmain(字符串[]args){
Tabuleiro tab=新Tabuleiro();
Jogador jog=新Jogador();
computator comp=新的computator();
tab.inicializarTabuleiro();
tab.mostraTabuleiro();
System.out.println(“Bem vindo ao Jogo da Velha!”);
System.out.println(“1号和3号文件的修订版”);
扫描器定义=新扫描器(System.in);
if(deficuldade.nextInt()==1){

对于(int i=1;i=0&&jogada而言,问题的原因是您已将类
Jogador
声明为具有如下
Tabuleiro
字段:

Tabuleiro tab = new Tabuleiro();
这就是Jogador.verificaJogada
正在测试的内容。但这是一个不同于您在
main
方法中初始化的
Tabuleiro
实例

显然,
verificaJogada
需要测试您在
main
中创建和初始化的
Tabuleiro


那么我如何引用main的实例呢

将在
main
中创建的
Tabuleiro
实例作为参数传递:

  • Jogador
    的构造函数指定一个参数(然后可以将该参数指定给
    Jogador.tab
    字段)
  • verificaJogada
    方法的参数
我想我必须在每节课上都做一个实例,这样才能起作用

我不知道你是从哪里得到这个想法的。每次你编写
new Tabuleiro()
,你都在创建一个新的
Tabuleiro
实例,它不同于以前创建的所有实例

Java
new
操作符总是创建一个新实例1。它从不返回先前创建的实例



1-…或引发异常。

您的
Tabuleiro
类定义是什么,特别是
mat
字段和
inicializarTabuleiro()
method?请提供一个我们可以自己运行和调试的方法。目前,我们无法告诉您问题是什么…除了您没有向我们展示的代码中最有可能存在的问题。具体来说,2D数组应该包含什么数据类型?如果它应该包含字符串,并且您使用==与字符进行比较,那么ng可能有很多问题。(如果它是一个字符串数组,与
char
相比将是一个编译错误…)什么是
converteJogada(jogada)
do?你不能改变这个原语
int
变量的任何内容,我在任何地方都看不到
col
变量。你需要发布更多的代码。请再帮我一次,好吗?那么我如何引用main的实例呢?我想我必须在每个类上为每个类创建一个实例这件事很难奏效。。
public class Jogador{

public Jogador(){
}

public Jogador(int linha, int coluna, boolean valid) {
    this.linha = linha;
    this.coluna = coluna;
    this.valid = valid;
}

Tabuleiro tab = new Tabuleiro();
Jogo jog = new Jogo();

public int linha;
public int coluna;
public boolean valid;
public char nulo;

public void converteJogada(int jogada){
    switch(jogada){
    case 1:
        row = 0;
        col = 0;
        break;
    case 2:
        row = 0;
        col = 1;
        break; 
    case 3:
        row = 0;
        col = 2;
        break;
    case 4:
        row = 1;
        col = 0;
        break;
    case 5:
        row = 1;
        col = 1;
        break;
    case 6:
        row = 1;
        col = 2;
        break;
    case 7:
        row = 2;
        col = 0;
        break;
    case 8:
        row = 2;
        col = 1;
        break;
    case 9:
        row = 2;
        col = 2;
        break;
        default:
            break;}
} 
    
public void verificaJogada(int jogada){
    if ((jogada >= 0 && jogada <= 9) && (tab.mat[row][col] == '-')){
    valid = true;
    }
    else {
        valid = false;
    }
Tabuleiro tab = new Tabuleiro();