Erro na execução de STACKOVERFLOW

0 respostas
V

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());

}

}
Criado 19 de setembro de 2006
Respostas 0
Participantes 1