Dúvida em lista

16 respostas
H

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.

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;
			}
		}
	}
}

16 Respostas

Eric_Yuzo

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

H

Então eu teria que declarar e instanciar aprovados?

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…

H

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…

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

aluisiodsv

Delcaração de um array:

String candidatos[];
H

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

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;
			}
		}
	}
	
}
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…

H

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…

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

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

Eric_Yuzo
halflife1940:
Agora ficou assim, mas esta dando erro em aprovados.lenght.
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;
			}
		}
	}
	
}
O erro ocorre porque posicao é um int e aprovados[i] é uma String.
Eric_Yuzo

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?

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…

H

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:

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;
			}
		}
	}
	
}
Eric_Yuzo
Acho que a intenção do método é adicionar o "candidato" em determinada "posicao" da lista.
String[] lista = new String[20];

public void adicionar(String item, int posicao){
    lista[posicao] = item;
}
Se você estiver com dificuldades de entender as estruturas de dados, te recomendo este material da caelum.
H
Eric Yuzo:
Acho que a intenção do método é adicionar o "candidato" em determinada "posicao" da lista.
String[] lista = new String[20];

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

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

Vou fazendo aqui, qualquer coisa posto aqui.

Muito obrigado Eric Yuzo.

H

Continuando esta apresentando outros erros:

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

//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
		
	}
	}
	
}
Eric_Yuzo

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…

H

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…

Agradeço mais uma vez.

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

Criado 27 de setembro de 2010
Ultima resposta 27 de set. de 2010
Respostas 16
Participantes 3