Pessoal eu estou inserindo valores em uma lista, mas ta ocorrendo alguns erros.
1° eu to inserindo sempre na mesma posição, ou seja, os valores não estão senso armazenados, estã sendo substituídos em cada inserção.
pra isso eu fiz um for:
//Esse é o meu método para inserirpublicList<Arco>iserir(Arcoori,Arcodest,Arcocus){System.out.println("Inserindo...");for(inti=0;i<sucessores.size();i++){this.sucessores.add(ori);this.sucessores.add(dest);this.sucessores.add(cus);sucessores.get(i);System.out.println("Sucessores: "+sucessores);}returnsucessores;}
mas n deu certo. Se eu tirar o for da certo, mas vai inserir sempre na mesma posição, substituindo os valores.
Outra coisa, quando ele exibe o valor da lista ta exibindo algo como:
Sucessores: [Arco@efd552, Arco@19dfbff, Arco@10b4b2f]
Mas na verdade vc quer que substitua ou não??? :!:
Ah! e pra mostrar os dados vê se assim funciona:
sucessores.get(i).toString();
aquilante
não! Eu quero inserir na lista, quero uma estrutura de lista, cada item em uma posição distinta.
Vlw!
malves_info
Me passa como esse objeto Arco recebe os dados, pra ter uma solução melhor…
De inicio esse objeto Arco ficaria melhor dentro de um vetor que quadaria tadas as referencia desse objeto… e no for vc ir ate o tamanho do Vetor e ir amarzenando no list.
[]´s
kallunga
Sempre que vc manda imprimir um List contendo objetos, no seu caso objetos da classe Arco, o método toString de cada objeto da lista é chamado.
Descreve com mais detalhes o que vc quer…
aquilante
Blz, o objeto arco pega o valor assim, atraves da classe scaner:
ListGrafolista=newListGrafo();CompVerticecomp=newCompVertice();Arcoorigem=newArco();Arcodestino=newArco();Arcocusto=newArco();intscanOrigem=0;intscanDestino=0;intscanCusto=0;switch(opcao){case1:System.out.printf("insira o vértice ");scanOrigem=scan.nextInt();origem.setOrigem(scanOrigem);System.out.printf("insira o destino \n");scanDestino=scan.nextInt();destino.setDestino(scanDestino);System.out.printf("insira o custo ");scanCusto=scan.nextInt();custo.setCusto(scanCusto);lista.listArco.add(origem);lista.listArco.add(destino);lista.listArco.add(custo);comp.iserir(origem,destino,custo);
Ve se ficou mais claro agora, o usuário insere os valores, eu seto os valores com os métodos set e passo para o objeto. Depois insiro na lista.
Espero q temha ficado claro! :lol:
kallunga
Acho que sei pq está substituindo.
O seu método “inserir” usa um List “sucessores” que provavelmente é um só para todos os elementos do Loop.
Talvez cada objeto precise ter um List não é?
E para facilitar a impressão dos seus objetos, vc pode sobrescrever o método toString() flw…
Vê se é isso e espero ter ajudado…
aquilante
Pessoal resolvi uma parte do problema, ja estou inserindo corretamente. Mas qdo eu imprimo a lista me retorna:
Estrutura: [[Arco@efd552, Arco@19dfbff, Arco@10b4b2f]].
Quero que ela imprima o valor correspondente, no caso é uma lista de inteiros.
jgbt
aquilante:
Pessoal resolvi uma parte do problema, ja estou inserindo corretamente. Mas qdo eu imprimo a lista me retorna:
Estrutura: [[Arco@efd552, Arco@19dfbff, Arco@10b4b2f]].
Quero que ela imprima o valor correspondente, no caso é uma lista de inteiros.
duas opções:
1 - Itere pela lista, pegue o objeto Arco da posição corrente, e exibe o valor que vc quer.
2- Sobrescreva o metodo toString da classe Arco.
[]´s
aquilante
jgbt como assim sobrescrever o método toString?
jgbt
Cara,
quando vc manda imprimir um objeto, o java chama o metodo toString desse objeto. O metodo toString é da classe Object, classe essa que como vc deve saber, toda classe java herda.
Mas como esse metodo saberia imprimir um objeto Arco? Ele não tem como saber, a classe Objetc não faz ideia de que existe uma classe Arco. Por isso vc deve sebrescrever esse metodo que vc herdou, para quando vc mandar imprimir umn objeto, seja chamado o metodo toString da sua classe, não o metodo herdado.
Se vc não sabe o que é sobrescrita de metodos, sugiro vc dar uma pesquisada sobre isso.