Dúvida em lista

Estou implementando uma lista e esta apresentando um erro em todas as palavras aprovados, não sei mais o que fazer, se alguém puder me ajudar eu agradeço.

[code]package Exemplo_slide;

public class aprovados {

public String adicionar;
public String aprovados;



public void adicionar(String candidato, int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++ ){
		if(aprovados[i] == null)
		break;
	
	aprovados[i] = object;  //Assume o valor da última casa null
	}
}

public void remover(int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++){
		if(aprovados[i] != null){
			aprovados[i] = null;
		}
	}
}

}[/code]

“aprovados” não é um array, por isso você não pode acessar um elemento pelo índice.

Então eu teria que declarar e instanciar aprovados?

Depende de o que você quer fazer.

O problema no código que foi postado é que está sendo declarada uma String e no método adicionar() você está tentando acessar os índices como se fosse um array.

O que você está tentando verificar se está nulo?

Falou…

[quote=Eric Yuzo]Depende de o que você quer fazer.

O problema no código que foi postado é que está sendo declarada uma String e no método adicionar() você está tentando acessar os índices como se fosse um array.

O que você está tentando verificar se está nulo?

Falou…[/quote]

Eu estou fazendo uma classe “aprovados”, onde nela, se encontram os métodos adicionar, remover, exibir, conter e alguns outros.

Delcaração de um array:

String candidatos[];

Agora ficou assim, mas esta dando erro em aprovados.lenght.

[code]package Exemplo_slide;

public class aprovados {

public String adicionar;
public String aprovados[];



public void adicionar(String candidato, int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++ ){
		if(aprovados[i] == null)
		break;
	
	aprovados[i] = posicao;  //Apresenta um erro na posicao, nao pode ser convertido para String
	}
}

public void remover(int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++){
		if(aprovados[i] != null){
			aprovados[i] = null;
		}
	}
}

}[/code]

Entendi o que você está tentando fazer.

Para poder manipular o array tem que declarar e inicializar(especificar seu tamanho).

String[] aprovados = new String[20];

Só uma dica. Você poderia criar uma variável int para guardar a quantidade de itens que estão adicionados.

Falou…

[quote=Eric Yuzo]Entendi o que você está tentando fazer.

Para poder manipular o array tem que declarar e inicializar(especificar seu tamanho).

String[] aprovados = new String[20];

Só uma dica. Você poderia criar uma variável int para guardar a quantidade de itens que estão adicionados.

Falou…[/quote]

Estou bem confuso ao começar, estou fazendo essa classe para depois chamá-la.

Declarar e instanciar não tem que ser na principal?

[quote=halflife1940]Agora ficou assim, mas esta dando erro em aprovados.lenght.

[code]package Exemplo_slide;

public class aprovados {

public String adicionar;
public String aprovados[];



public void adicionar(String candidato, int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++ ){
		if(aprovados[i] == null)
		break;
	
	aprovados[i] = posicao;  //Apresenta um erro na posicao, nao pode ser convertido para String
	}
}

public void remover(int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++){
		if(aprovados[i] != null){
			aprovados[i] = null;
		}
	}
}

}[/code][/quote]
O erro ocorre porque posicao é um int e aprovados[i] é uma String.

[quote=halflife1940]Estou bem confuso ao começar, estou fazendo essa classe para depois chamá-la.

Declarar e instanciar não tem que ser na principal?[/quote]

Na verdade você pode declarar variáveis e instanciar objetos em qualquer classe.

[EDIT] Não sei se é essa a dúvida. Mas você não está criando a classe e chamando ela mesma.

String[] aprovados //declaração da variável new String[10]; //criação de um novo objeto
Falou…

Como faço essa conversão?

Estou bem confuso ao começar, a gene vai aprendendo durante as aulas, mas na hora de começar mesmo a coisa não anda.

Vou postar como esta no momento:

[code]package Exemplo_slide;

public class aprovados {

public String adicionar;

String[] aprovados = new String[20];



public void adicionar(String candidato, int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++ ){
		if(aprovados[i] == null)
		break;
	
	aprovados[i] = posicao;  //Assume o valor da última casa null
	}
}

public void remover(int posicao){
	
	for(int i = 0 ; i < aprovados.lenght ; i++){
		if(aprovados[i] != null){
			aprovados[i] = null;
		}
	}
}

}[/code]

Acho que a intenção do método é adicionar o “candidato” em determinada “posicao” da lista.

[code]String[] lista = new String[20];

public void adicionar(String item, int posicao){
lista[posicao] = item;
}
[/code]
Se você estiver com dificuldades de entender as estruturas de dados, te recomendo este material da caelum.

[quote=Eric Yuzo]Acho que a intenção do método é adicionar o “candidato” em determinada “posicao” da lista.

[code]String[] lista = new String[20];

public void adicionar(String item, int posicao){
lista[posicao] = item;
}
[/code]
Se você estiver com dificuldades de entender as estruturas de dados, te recomendo este material da caelum.[/quote]

É isso mesmo, aí é so chamar o método adicionar na principal.

Vou fazendo aqui, qualquer coisa posto aqui.

Muito obrigado Eric Yuzo.

Continuando esta apresentando outros erros:

E outra dúvida, eu não consigo chamar os métodos.

[code]//Classe aprovados:

//Apresenta erro em todas a palavras “posicao”
package Exemplo_slide;

public class aprovados {

String lista[] = new String[30];

int cand;


public void adicionar(String candidato, int posicao){
	lista[posicao] = candidato;
	cand++;
}



public void remover(int posicao){
	
	for(int i = 0 ; i < lista.length ; i++){
		if(posicao[i] != null){
			posicao[i] = null;
		}	
	}
	
public void exibir(int posicao, String candidato){
	for(int i = 0 ; i < lista.length ; i++){
		posicao[i] = candidato;
 	}
    } 	
}

}

//Classe principal

package Exemplo_slide;
import javax.swing.JOptionPane;
public class Lista02 {

public static void main(String args[]){
	

	aprovados apro;
	
	apro = new aprovados();

String[] aprovados = new String[10];

char menu;




menu = JOptionPane.showInputDialog("Escolha a opção desejada:\n 1. Inserir candidato" +
		"2. Remover candidato\n 3.").charAt(0);


	
switch (menu){

case '1':
	
	apro.adicionar(JOptionPane.showMessageDialog("Candidato inserido"));//Erro no showMessaDialog
	break;
	
case '2':
	
	apro.remover(JOptionPane.showMessageDialog("Candidato removido"));//Erro no showMessaDialog
	
}
}

}[/code]

O erro está ocorrendo porque não existe um método showMessageDialog que receba apenas o texto a ser exibido. O próprio erro já deve estar informando isso.

A assinatura com menos argumentos de showMessageDialog recebe o componente pai (parentComponent) e o texto (message). Se quiser que fique apenas centralizado na tela, passe null para parentComponent.

JOptionPane.showMessageDialog(null, "Candidato inserido");

Mais uma coisa, o showMessageDialog tem retorno void. Então você não pode passá-lo como parâmetro para o método adicionar que você criou na sua classe, que recebe dois parâmetros (String candidato e int posicao).

Você tem passar para o seu método adicionar, o candidato e a posição onde ele deve ser adicionado. Por exemplo:

apro.adicionar("João", 2); //Vai adicionar a String "João" na posição 2 do array.

Aconselho a estudar um pouco de orientação a objetos e entender como funciona a chamada de métodos, passagem de parâmetros.

Falou…

O erro está ocorrendo porque não existe um método showMessageDialog que receba apenas o texto a ser exibido. O próprio erro já deve estar informando isso.

A assinatura com menos argumentos de showMessageDialog recebe o componente pai (parentComponent) e o texto (message). Se quiser que fique apenas centralizado na tela, passe null para parentComponent.

JOptionPane.showMessageDialog(null, "Candidato inserido");

Mais uma coisa, o showMessageDialog tem retorno void. Então você não pode passá-lo como parâmetro para o método adicionar que você criou na sua classe, que recebe dois parâmetros (String candidato e int posicao).

Você tem passar para o seu método adicionar, o candidato e a posição onde ele deve ser adicionado. Por exemplo:

apro.adicionar("João", 2); //Vai adicionar a String "João" na posição 2 do array.

Aconselho a estudar um pouco de orientação a objetos e entender como funciona a chamada de métodos, passagem de parâmetros.

Falou…[/quote]

Agradeço mais uma vez.

Então, o usuário deve determinar o candidato a ser inserido.