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.
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.