Estou aprendendo a programar agora, e estou usando o BlueJ para ajudar na evolução da minha lógica.
A ideia do código abaixo é conter métodos que possam realizar as tarefas de incluir novos cantores ou eliminar ou alterar. Então criei uma classe com todas essas ideias, mas está havendo um erro que eu desconheço: “constructor Cantor in class Cantor cannot be applied to given types”, que traduzo assim: o método construtor na classe Cantor não pode ser aplicado aos tipos dados.
Realmente não sei que erro é esse, alguém consegue resolver o mistério? Os vários sinais de maior indicam a linha de código com problema.
public class Cantor {
private Cantor [] cantor; //array de classe nulo;
public void inserirCantor(String nome, float salario) {
int controlePosicao = 0; //controla a posição dos cantores;
if(cantor == null) { // verifica se o array está vazio;
cantor = new Cantor[1];
controlePosicao = 0; // vai zerar a posição;
} else {
Cantor [] backup = cantor; // caso o array tenha cantor, o mesmo será guardado no array de backup criado
cantor = new Cantor[cantor.length + 1]; // aumenta o array original em uma posição;
for(int i = 0; i < backup.length; i++) { // copia os objetos para o array original;
cantor[i] = backup[i];
controlePosicao = backup.length; //organiza a posição;
}
}
cantor[controlePosicao] = new Cantor(nome, salario); // criar objeto na posição inserindo dados;
}
public void modificarCantor(int controlePosicao, String nome, float salario) { // modifica a ficha do cantor
if(isPosicaoValida(controlePosicao)) { // verifica se a posição é válida;
cantor[controlePosicao].setNome(nome); // faz a alteração do nomeo do cantor;
cantor[controlePosicao].setSalario(nome); // faz a alteração do salario do cantor;
}
}
public void excluirCantor(int controlePosicao) { // faz a exlusão de um cantor
if(posicaoValida(controlePosicao)) { // verificar se a posição é válida
if(cantor.length > 1) { // saber se existe mais de um cantor;
cantor [] backup = cantor; // cria um novo array para guardar os novos cantores;
cantor = new Cantor[cantor.length - 1]; //reduz uma posição no array original;
int posicaoOriginal = 0; // controla a posição no array original;
for(int i = 0; i < backup.length; i++){ //copia objetos para o array original, menos o cantor indicado
if(i != controlePosicao) {
cantor[posicaoOriginal ++] = backup[i];
}
}
} else {
cantor = null; // vai anular o array original;
}
}
}
public void mostrarCantores() { // mostrar todos os cantores cadastrados;
for(Cantor listarCantores : cantor) { //For Each para mostrar os cantores;
System.out.println(listarCantores.getNome() + " " + listarCantores.getSalario());
}
}
private boolean isPosicaoValida(int controlePosicao){ // verifica se a posição informada é válida;
if(cantor == null || cantor > ficha.length - 1){ //caso a posição seja não exista ou a posição seja maior que o array;
System.out.println("Posição não foi encontrada"); //informar do erro;
return false; // retorna "errado";
}
return true; // retorna "correto";
}
}