[resolvido]Arraylist

6 respostas
B

eae galera,
fiz duas classes.
primeira:

package PagSeguro;

public class Metodos {

	protected double custo;
	protected double taxa;
	protected double lucro;
	protected double precodecusto;
	protected double porcentagemdelucro;
	protected double precodevenda;
	protected double desconto;
	private double valorcomdesconto;
	protected double ValorDaVenda;

	public void setTaxa(double ValorDaVenda) {
		this.taxa = ValorDaVenda * 0.05 + 0.40;
		System.out.println("taxa: " + taxa);
	}

	protected void setPrecodecusto(double precodecusto) {
		this.precodecusto = precodecusto;
	}

	protected void setPrecodevenda(double precodevenda) {
		this.precodevenda = precodevenda;
	}

	protected void ValorDeLucro(double ValorDeVenda) {
		this.lucro = ValorDeVenda - (this.precodecusto + taxa);
		System.out.println("lucro: " + lucro);
	}

	protected void lucroporcem(double ValorDeVenda) {
		this.porcentagemdelucro = (this.lucro * 100) / ValorDeVenda;
		System.out.println("porcentagem de lucro: " + this.porcentagemdelucro
				+ "%");

	}

	protected boolean VerificarDesconto(double desconto) {
		if (this.porcentagemdelucro > desconto) {
			if (this.porcentagemdelucro > desconto) {
				this.valorcomdesconto = this.lucro - this.lucro
						* (desconto / 100);
				System.out.println("valor com Desconto: " + valorcomdesconto);
			}
			return true;

		} else {
			System.out.println("não foi possível conceder desconto");
			return false;

		}
	}

	protected Metodos(double taxa, double lucro, double precodecusto,
			double porcentagemdelucro) {
		this.taxa = taxa;
		this.lucro = lucro;
		this.precodecusto = precodecusto;
		this.porcentagemdelucro = porcentagemdelucro;
	}

	protected Metodos() {

	}

	public String toString() {
		return "Dados transação:" + "taxa: " + taxa + "lucro: " + lucro
				+ "preço de custo: " + precodecusto + "porcentagem de lucro: "
				+ porcentagemdelucro + "";

	}

}

segunda:

package PagSeguro;

public class Testepagseguro extends Metodos{
	public static void main(String[] args) {

		Metodos m1 = new Metodos();

		m1.setTaxa(1234);
		m1.setPrecodecusto(123);
		m1.ValorDeLucro(1234);
		m1.lucroporcem(1234);
		m1.VerificarDesconto(1);
		

	}
}

ambas as classes estão no mesmo pacote e eu queria armazenar o m1 inteiro (setTaxa,setPrecodecusto,…) em uma array list
em que está ne uma classe fora desse pacote. e depois disso imprimir o resultado.
a classe fora do pacote é essa:

import java.util.ArrayList;
import java.util.List;


import PagSeguro.*;


public class teste000 extends Testepagseguro {
public static void main(String[] args) {
	
	
	
	List lista = new ArrayList();
	Testepagseguro teste = new Testepagseguro();
	lista.add("manoel");
	lista.add("joaquim");
	lista.add("shock");
	lista.add("balabas");
System.out.println(lista.size());
System.out.println(lista.get(4));

}
}

tentei dar import e extends mais não consegui.
se alguém puder me ajudar agradeço :smiley:
vlw ai galera.

6 Respostas

S

Qual erro está aparacendo? Compilei aqui sem problemas mas lançou uma IndexOutOfBoundsException pois você está tentanto acessar a posição número 4 em um ArrayList que vai de 0 a 3.

B
List lista = new ArrayList();

	lista.add("manoel");
	lista.add("joaquim");
	lista.add("shock");
	lista.add("balabas");
	lista.add(m1);
System.out.println(lista.size());
System.out.println(lista.get(4));

}
}

Sem_Nome percebi que nao fui muito claro e peço perdão.
eu queria fazer algo parecido com o lista.add(m1).
sei que isso nao compilará mais é pra compreender melhor o que
estou querendo dizer.
não estou conseguindo achar um jeito correto pra fazer isso.

S

Se eu entendi bem você quer fazer um ArrayList de Metodos correto na classe teste000 certo?

Os construtores e os metodos da classe Metodos estão como protected portanto não é possível acessa-lo de fora do pacote.

Mesmo que você extenda a classe Metodos você teria que sobrescrever todos os metodos que você quer acessar de fora assim:

public class ExtensaoDeMetodos extends Metodos {
	
	@Override
	public void setPrecodecusto(double precodecusto) {
		super.setPrecodecusto(precodecusto);
	}

         //os outros metodos vem aqui
	
}

O que ao meu ver é totalmente desnecessário.

E mais uma coisa quando declarar a List faça assim:

List<Metodos> lista = new ArrayList<Metodos>();

Para evitar casting.

B

entendi e não entendi :smiley:
a parte do protected e a do <> ficou claro.
só fiquei com uma duvida em relação aos metodos.
se eu pegar e fizer umas arraylist assim

List<Metodos> lista = new ArrayList<Metodos>();

eu tenho que declarar os metodos desse jeito( cada metodo = uma posição na array)

lista.setTaxa();
		lista.setPrecodecusto();
		lista.ValorDeLucro();
		lista.lucroporcem();
		lista.VerificarDesconto();

ou tem como eu adicionar todos esses metodos em uma unica posição??

S

Declare o ArrayList assim:

List<Metodos> lista = new ArrayList<Metodos>();

Para adicionar algo a ele:

Metodos m1 = new Metodos();
lista.add(m1);

Para chamar um metodo (por exemplo, setTaxa) você faz assim:

lista.get(indice).setTaxa(1234);

Onde indice é a posição que você quer acessar.

Ou você pode também fazer assim (melhor opção na minha opinião):

Metodos m1 = new Metodos();
lista.add(m1);
m1.setTaxa(1234);
B

Sem_Nome muito obrigado por me ajuda e ser paciente :D.
Agora deu certinho o que eu estava querendo fazer.
desculpa se me expressei mal ou falei algo errado.

Criado 3 de fevereiro de 2014
Ultima resposta 3 de fev. de 2014
Respostas 6
Participantes 2