Bruxaria ou Desatenção?

6 respostas
java
Rahmon_Marcossi

Sinceramente não sei o que está rolando…
Estou tentando passar como parâmetro uma variável incrementada em um for, mas o resultado é esse:

Primeiro eu rodo um for, que vai de 0 à n, sendo n o tamanho de um ArrayList chamado pallets:

image

Depois eu atribuo o valor de n para o campo “numeroPallet”, que é um inteiro pertencente à minha classe:

image

-----Saída:
image
image

Então tento imprimir com o trecho: image

o for corre corretamente de 0 à pallets.size(), porém, quando tento imprimir o valor contido dentro do atributo eis o que aparece:
Eis o resultado magnifico:
image

6 Respostas

L

o problema é que i++ só incrementa apos o termino da iteração … tente ++i. fique atento vom a logica de condição para termino do laço pois ficará com uma iteração a menos no final …

abraços!

Rahmon_Marcossi

boa noite lucas, acredito que o problema não seja este pois já tentei de ambas as formas e o resultado foi o mesmo… não compreendi o que está acontecendo, de qualquer forma agradeço a ajuda.

Rodrigo_Void

A n ser que tenha mais código relevante que não foi postado, voto na opção da bruxaria :fearful:

Rodrigo_Void

Posta a classe deste objeto que esta na lista.

Rahmon_Marcossi

import java.util.ArrayList;

public class Pallet {

private int numeroPallet;

private int qtdTotal;

private String nomeCliente;

private String trip;

private String stage;

private String transportadora;

private ArrayList produtos = new ArrayList();

private float pesoPallet;
public int getNumeroPallet() {
	return numeroPallet;
}

public void setNumeroPallet(int numeroPallet) {
	this.numeroPallet = numeroPallet;
	System.out.println("DENTRO DO MÉTODO GET I VALE -> "+numeroPallet);
}
public String getNomeCliente() {
	return nomeCliente;
}
public void setNomeCliente(String nomeCliente) {
	this.nomeCliente = nomeCliente;
}
public String getTrip() {
	return trip;
}
public void setTrip(String trip) {
	this.trip = trip;
}
public String getStage() {
	return stage;
}
public void setStage(String stage) {
	this.stage = stage;
}
public String getTransportadora() {
	return transportadora;
}
public void setTransportadora(String transportadora) {
	this.transportadora = transportadora;
}
public void setProdutos(ArrayList<Linha> produtos) {
	this.produtos = produtos;
}

public void atualizarPesoPallet(){
	float pesoTotal = 0;
	for(Linha aux : produtos){
		pesoTotal += aux.getPeso();
	}
	this.setPesoPallet(pesoTotal);
}
public float getPesoPallet() {
	return pesoPallet;
}
public void setPesoPallet(float pesoPallet) {
	this.pesoPallet = pesoPallet;
}
public void setQtdTotal(int qtdTotal) {
	this.qtdTotal = qtdTotal;
}

public void adicionarProdutos(Linha novoProduto){
	this.produtos.add(novoProduto);
}
public ArrayList<Linha> getProdutos() {
	return produtos;
}

public int getQtdTotal(){
	for(int i=0; i<produtos.size(); i++){
		qtdTotal += produtos.get(i).getQuantidade();
	}
	
	return qtdTotal;
}

public String toString(){
	return String.format("%d", numeroPallet);
}
public String getProdutosPallet(){
	StringBuffer sb = new StringBuffer();
	for(Linha aux : produtos)
		sb.append(aux.toString() +"\n");
	
	return sb.toString();
}

}

rodevops

E como você está preenchendo o ArrayList de Pallets?

A falta de atenção pode estar aí, pois pelo comportamento estou imaginando posicionamentos duplicados dentro dele, por exemplo:

Pallet p = new Pallet();
p.setNumeroPallet(1);

List<Pallets> pallets = new ArrayList<>();
pallets.add(p);
pallets.add(p);

p.setNumeroPallet(2);

for (Pallet p : pallets) {
    System.out.println(p.getNumeroPallet());
}

Perceba que será impresso 2 duas vezes… creio que em algum ponto do código o preenchimento do ArrayList está com essa falha de duplicidade…

Criado 21 de junho de 2018
Ultima resposta 22 de jun. de 2018
Respostas 6
Participantes 4