Pessoal, onde identifico e como trato erro de “estouro de pilha” já que na compilação não me identifica o erro somente na execução, fiz um modelinho e não consigo identificar. :?:
segue o código:
public abstract class Cliente
{
//Atributos da Classe Cliente que sero herdados pelas outras classes
public double quantoGastou;
public String nome;
//Construtor da classe Cliente
public Cliente(String nome, double quantoGastou)
{
this.nome = nome;
this.quantoGastou = quantoGastou;
}
//Mtodo para “pegar” o custo
public double getquantoGastou()
{
return this.quantoGastou;
}
//Mtodo para “pegar” a quantidade de clientes
public double getConta()
{
return this.quantoGastou;
}
//Mtodo para “pegar” o nome
public String getNome()
{
return nome;
}
}
import java.util.*;
public class ClienteAssociado extends Cliente
{
private List avulsa;
//Construtor da classe ClienteAssociado
public ClienteAssociado(String nome, double quantoGastou)
{
super(nome, quantoGastou);// o mesmo que o this
this.avulsa = new LinkedList();
}
//Metodo que “joga” na lista os avulsos
public void setavulsa(List avulsa)
{
this.avulsa = avulsa;
}
//Adiciono na lista lista o nome e o valor do pessoal avulso
public void adicionaListaAvulsa(Cliente cl)
{
this.avulsa.add(cl);
}
public double getConta()
{
double valortotal = this.getConta();
Iterator i = this.avulsa.iterator();
Cliente cliente = null;
while(i.hasNext())
{
Cliente cl = (Cliente) i.next();
valortotal += cliente.getConta();
}
return valortotal + this.getquantoGastou();
}
public String getNome()
{
String nomes = "";
Iterator i = this.avulsa.iterator();
while(i.hasNext())
{
nomes += "\n" + (Cliente)i.next();
}
return (String) nomes;
}
}
public class ClienteAvulso extends Cliente
{
private double gastoAvulso;
private String nome;
//Construtor da classe ClienteAvulso
public ClienteAvulso(String nome, double gastoAvulso)
{
super(nome, gastoAvulso);// o mesmo que o this
this.gastoAvulso = gastoAvulso;
}
//Metodo para saber quanto o cliente avulso gastou
public double quantoGastou()
{
return this.gastoAvulso;
}
}
public class Principal
{
public static void main(String [] args)
{
//Cliente associado com seus parametros
ClienteAssociado associado = new ClienteAssociado(“Alessandra”, 1223.00);
//Clientes avulsos com seus parametros
ClienteAvulso avulso1 = new ClienteAvulso(“Carlos”,1560.00);
ClienteAvulso avulso2 = new ClienteAvulso(“Pedro”,400.00);
//Aqui associo o associado com o avulso
associado.adicionaListaAvulsa(avulso1);
associado.adicionaListaAvulsa(avulso2);
//Imprimo na tela o total do associado e seus dependentes
System.out.println( "Contribuio da Alessandra: " + associado.getConta());
System.out.println( "Dependente(s) Alessandra: " + associado.getNome());
}
}