método inserir

10 respostas
aquilante

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 inserir
public List<Arco> iserir(Arco ori, Arco dest, Arco cus) {

		System.out.println("Inserindo...");
		for (int i = 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);
		}
		return sucessores;

	}

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]

Aguém pode me ajudar?!! :wink:

vlwss!

10 Respostas

malves_info

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:

ListGrafo lista = new ListGrafo();
CompVertice comp = new CompVertice();

Arco origem = new Arco();
Arco destino = new Arco();
Arco custo = new Arco();
int scanOrigem = 0;
int scanDestino = 0;
int scanCusto = 0;

switch (opcao) {
	case 1:

        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.

[]´s

Criado 17 de abril de 2008
Ultima resposta 17 de abr. de 2008
Respostas 10
Participantes 4