我有5个文件.java:Validador.java,Peca.java,Tabuleiro.java,Rainha.java和Nada.java。
Validador.java:
public class Validador {
public static void main(String[] args) {
if(args.length == 0) { // sem argumentos
Tabuleiro tab = new Tabuleiro("DD--");
Peca peca = tab.peca(0,0);
System.out.println(peca.podeIrPara(1,1));
}else if (args[0].equals("filtro")) { // argumento filtro
}
}
}
Peca.java:
public abstract class Peca {
int linha;
int coluna;
Tabuleiro tab;
boolean isNada;
Peca(Tabuleiro tab, int linha, int coluna) {
this.tab = tab;
this.linha = linha;
this.coluna = coluna;
}
boolean vazia() {
if(isNada) {
return true;
}else {
return false;
}
}
boolean podeIrPara (int linha, int coluna) { // ver se se pode mover para uma posicao
System.out.println(tab.tamanho_tabuleiro);
return true;
}
}
Tabuleiro.java:
public class Tabuleiro extends Peca {
char tabuleiro_array[][];
int tamanho_tabuleiro;
(it shows an error here) ---> Tabuleiro(String repr){
int tamanho_tabuleiro = (int)Math.sqrt(repr.length());
this.tamanho_tabuleiro = tamanho_tabuleiro;
char[][] tabuleiro_array = new char[tamanho_tabuleiro][tamanho_tabuleiro]; //cria um tabuleiro
int coluna = 0;
int linha = 0;
for(int i = 0; i < repr.length(); ++i) {
char ch = repr.charAt(i);
if(ch == 'D' || ch == '-') {
tabuleiro_array[linha][coluna] = ch;
coluna++;
}
if(coluna == tamanho_tabuleiro) {
coluna = 0;
linha++;
}
}
this.tabuleiro_array = tabuleiro_array;
}
Rainha.java
public class Rainha extends Peca {
Rainha(Tabuleiro tab, int linha, int coluna) {
super(tab, linha, coluna);
super.isNada = false;
super.coluna = coluna;
super.linha = linha;
super.tab = tab;
}
}
Nada.java:
public class Nada extends Peca {
Nada(Tabuleiro tab, int linha, int coluna) {
super(tab, linha, coluna);
super.isNada = true;
super.coluna = coluna;
super.linha = linha;
super.tab = tab;
}
}
[当我尝试运行代码时,出现此错误:
Implicit super constructor Peca() is undefined. Must explicitly invoke another constructor
at Tabuleiro.<init>(Tabuleiro.java:5)
at Validador.main(Validador.java:5)
我是一名大学生,我真的需要交付这个项目……有人知道如何解决这个问题吗?
在Peca.java
中,添加此构造函数:
public abstract class Peca {
int linha;
...
Peca(){}
...
}
这是因为从主类Tabuleiro(String repr)
调用Tabuleiro tab = new Tabuleiro("DD--");
也会显式调用超类的(Peca
在您的情况下)构造函数,并且由于您未提供任何构造函数,因此Java将插入对超类的无参数构造函数,即super();就像您在做的一样:
Tabuleiro(String repr){
super();
int tamanho_tabuleiro = (int)Math.sqrt(repr.length());
...
}
由于未定义,因此您将看到编译时错误。