Impressão arraylist

Ola. tenho uma classe seguro automovel na qual no final dela, eu retorno as variaves e uma classe seguro vida que tambem retorno as variaves dela igual embaixo. Ambas classes são subclasses de uma classe seguro a qual tem um metodo imprimir abstrato

public  String  imprimiSeguro() // seguro auto
  {

		  return   "Num:  " +  this.getNum() + "\n" +  "Nome: "+ this.getNome() + "\n" + "Valor: " + this.getValor() + "\n" + "Premio: " + this.getPremio() + "\n" + "Num Lic: " + this.numlic + "\n" + "Deducao:" + this.dedcar + "\n" + "Estado origem: " + this.estado2 + "\n" + "Modelo: " +  this.modelo + "\n" +  "Ano: " +this.ano + "\n";

  }

[code]
public String imprimiSeguro() // seguro de vida
{
return "Num: " + this.getNum() + “\n” + "Nome: "+ this.getNome() + “\n” + "Valor: " + this.getValor() + “\n” + "Premio: " + this.getPremio() + “\n” + "Beneficiario: " + this.beneficiario + “\n”;

}

[quote]

no programa principal tenho a declaração do arraylist

ArrayList<Seguro> seg = new ArrayList<Seguro>();

1 duvida. eu teria que criar um arraylist pra seguro auto e outra pra seguro vida ou posso usar assim mesmo??

Depois da entrada de dados de cada case eu faço

seg.add(segp); para seguro vida

seg.add(sega); para seguro automovel

na hora de imprimir eu imprimo

System.out.print (sega.imprimiSeguro());
System.out.print (segp.imprimiSeguro());

só que ele junta os dois seguros em um só, como se concatenassem as variaveis e se eu crio 3 tipos de seguro, só imprime 1 e não os 3

alguem poderia me auxiliar?

PS. não sei se o exemplo que estou fazendo é polimorfismo, pois tal trabalho seria para tal pratica

Não sei se entendi direito, mas acho que você tem uma classe Seguro e 2 subclasse herdando disso: SeguroVida e SeguroCarro.

Se for isso, voce pode adicionar os 2 tipos de seguros na mesma lista “List seguros” e então imprimi-la utilizando um loop

for(Seguro s : seguros) {
  s.imprimiSeguro(); // aqui esta o polimorfismo
}

O polimorfismo está ali pois ele irá chamar o metodo certo de SeguroVida ou SeguroCarro, mesmo ambas sendo declaradas do tipo generico Seguro.

seria assim mesmo

mas aqui não imprimi nada


for(Seguro s : seg) {
							  s.imprimiSeguro(); // aqui esta o polimorfismo
}

isso né?

a minha classe seguro auto esta assim

public  class SeguroAuto extends Seguro
{

	private int numlic;
	private int dedcar;
	private String estado2;
	private String modelo ;
	private int ano;
	//Método Construtor
	public SeguroAuto (int num,String nome,String rua,String cidade,String estado,String cep, float valor, float premio,int numlic, int dedcar, String estado2, String modelo, int ano)
	{
		super (num,nome,rua,cidade,estado,cep,valor,premio);
		this.numlic=numlic;
		this.dedcar=dedcar;
		this.estado2=estado2;
		this.modelo=modelo;
		this.ano=ano;
	}

	public int getNumlic()
	 {
		return numlic;
	 }
	public void setNumlic (int numlic)
	 {
		this.numlic = numlic;
	 }
	public int getDedcar()
	 {
		return dedcar;
	 }
	public void setDedcar (int dedcar)
	 {
		this.dedcar = dedcar;
	 }
	public String getEstado2()
	 {
		return estado2;
	 }
    public void setEstado2 (String estado)
     {
		this.estado2 = estado2;
	 }
   	public String getModelo()
   	 {
   		return modelo;
   	 }
   public void setModelo (String modelo)
     {
   		this.modelo = modelo;
	 }
    public int getAno()
	 {
		return ano;
     }
    public void setAno (int ano)
	 {
			this.ano = ano;
	 }
  public  String  imprimiSeguro()
  {
		  return   "Num:  " +  this.getNum() + "\n" +  "Nome: "+ this.getNome() + "\n" + "Valor: " + this.getValor() + "\n" + "Premio: " + this.getPremio() + "\n" + "Num Lic: " + this.numlic + "\n" + "Deducao:" + this.dedcar + "\n" + "Estado origem: " + this.estado2 + "\n" + "Modelo: " +  this.modelo + "\n" +  "Ano: " +this.ano + "\n";
  }

}//fim da classe

a seguro pessoa esta praticamente igual, so mudando as variaveis

E a classe que imprime?

os metodos de imprimir

 public  String  imprimiSeguro()  
  {  
          return   "Num:  " +  this.getNum() + "\n" +  "Nome: "+ this.getNome() + "\n" + "Valor: " + this.getValor() + "\n" + "Premio: " + this.getPremio() + "\n" + "Num Lic: " + this.numlic + "\n" + "Deducao:" + this.dedcar + "\n" + "Estado origem: " + this.estado2 + "\n" + "Modelo: " +  this.modelo + "\n" +  "Ano: " +this.ano + "\n";  
  }  

a da classe seguro auto

e da classe seguro é public abstract String imprimiSeguro()

A classe que voce colocou o for da outra resposta eu quis dizer… Que tem a lista de seguros.

ta meio grande. não sei se ta certa

ignore o case 5, to fazendo ainda

mas os cases 1 2 3 são pra add ( simplifiquei o exemplo com 2 tipos de seguro mas o trab é com 3, mas acho que nao muda nada) o 4 é pra imprimir. fiz o uso de contrutores, não sei se ta certo usa-los

// CLASSE MAIN
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public class Principal
{
	Scanner input = new Scanner(System.in);
	public static void main (String [] args)
	{
		List<Seguro> seg = new ArrayList<Seguro>();
		Scanner input = new Scanner(System.in);
		int numb;
		int op;
		int numlic = 0;
		int dedcar = 0;
		int num = 0;
		float valor = 0;
		float premio = 0;
		int ded = 0;
		String nome = null;
		String rua = null;
		String cidade = null;
		String estado = null;
		String estado2 = null;
		String cep= null;
		String beneficiario = null;
		String dia = null;
		String mes = null;
		String ano = null;
		String modelo = null;
		int anomodel = 0;
		int anoc = 0;
		int dedcasa = 0;
		do{
			System.out.print("Digite a opcao de seguro \n");
			System.out.print("1 - Seguro de vida\n");
			System.out.print("2 - Seguro de imovel\n");
			System.out.print("3 - Seguro de carro\n");
			System.out.print("4 - Listar todos os seguros\n");
			System.out.print("5 - Procurar por numero de apolice\n");
			System.out.print("0 - Sair\n");
			op = Integer.parseInt(input.nextLine());
			System.out.print ("\n");

			SeguroVida segp = new SeguroVida(num,nome,rua,cidade,estado,cep,valor,premio,beneficiario,dia,mes,ano);
			SeguroCasa segc = new SeguroCasa(num,nome,rua,cidade,estado,cep,valor,premio,dedcasa,anoc);
			SeguroAuto sega = new SeguroAuto(num,nome,rua,cidade,estado,cep,valor,premio,numlic,dedcar, estado2,modelo,anomodel);
			Endereco end = new Endereco (rua,cidade,estado,cep);

			switch (op)
			{
				case 1:

							System.out.print("\nDigite numero da apolice\n");
							num = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite seu nome\n");
							nome = input.nextLine();
							System.out.print("\nDigite nome da rua\n");
							rua =input.nextLine();
							System.out.print("\nDigite nome da cidade\n");
							cidade =input.nextLine();
							System.out.print("\nDigite nome do estado\n");
							estado = input.nextLine();
							System.out.print("\nDigite o cep\n");
							cep = input.nextLine();
							System.out.print("\nDigite o valor do seguro\n");
							valor = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o premio do seguro\n");
							premio = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o nome do beneficiario\n");
							beneficiario = (input.nextLine());
							System.out.print("\nDigite o dia de nascimento\n");
							dia = input.nextLine();
							System.out.print("\nDigite o mes de nascimento\n");
							mes = input.nextLine();
							System.out.print("\nDigite o ano de nascimento\n");
							ano = input.nextLine();
							seg.add(segp);
							break;
				case 2:

							System.out.print("\nDigite numero da apolice\n");
							num = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite seu nome\n");
							nome = input.nextLine();
							System.out.print("\nDigite nome da rua\n");
							rua =input.nextLine();
							System.out.print("\nDigite nome da cidade\n");
							cidade =input.nextLine();
							System.out.print("\nDigite nome do estado\n");
							estado = input.nextLine();
							System.out.print("\nDigite o cep\n");
							cep = input.nextLine();
							System.out.print("\nDigite o valor do seguro\n");
							valor = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o premio do seguro\n");
							premio = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o ano de construcao\n");
							anoc = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o valor da decucao da casa\n");
							dedcasa = Integer.parseInt(input.nextLine());
							seg.add(segc);
							break;
				case 3:

							System.out.print("\nDigite numero da apolice\n");
							num = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite seu nome\n");
							nome = input.nextLine();
							System.out.print("\nDigite nome da rua\n");
							rua =input.nextLine();
							System.out.print("\nDigite nome da cidade\n");
							cidade =input.nextLine();
							System.out.print("\nDigite nome do estado\n");
							estado = input.nextLine();
							System.out.print("\nDigite o cep\n");
							cep = input.nextLine();
							System.out.print("\nDigite o valor do seguro\n");
							valor = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o premio do seguro\n");
							premio = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o numero da licensa\n");
							numlic = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite a deducao do veiculo\n");
							dedcar = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite nome do estado de origem do carro\n");
							estado2 = input.nextLine();
							System.out.print("\nDigite o modelo do carro\n");
							modelo = input.nextLine();
							System.out.print("\nDigite o ano do veiculo\n");
							anomodel = Integer.parseInt(input.nextLine());
							seg.add(sega);
							break;
		case 4:



							for(Seguro s : seg) {
							  s.imprimiSeguro(); // aqui esta o polimorfismo
}
							break;

		case 5:
							System.out.println ("\nDigite o numero da licensa \n");  // implementar
							numb = Integer.parseInt(input.nextLine());


			}







	}while (op!=0);
}
}

A parte de imprimir está certa. Mas a criação de cada seguro devia ocorrer apenas depois de voce ter os dados em cada case, só então criar o seguro certo e então adicionar a lista.

Abs

a parte em que eu adiciono no arraylist esta certo? {uso do add}

e voce diz para colocar os construtores uma linha antes-uma depois desse add’s?

Isso, algo assim:

case bla:
le

le
constroi o objeto (sega = new …)
adiciona a lista (seg.add(…) )

fiz assim

case 2:

							System.out.print("\nDigite numero da apolice\n");
							num = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite seu nome\n");
							nome = input.nextLine();
							System.out.print("\nDigite nome da rua\n");
							rua =input.nextLine();
							System.out.print("\nDigite nome da cidade\n");
							cidade =input.nextLine();
							System.out.print("\nDigite nome do estado\n");
							estado = input.nextLine();
							System.out.print("\nDigite o cep\n");
							cep = input.nextLine();
							System.out.print("\nDigite o valor do seguro\n");
							valor = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o premio do seguro\n");
							premio = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o ano de construcao\n");
							anoc = Integer.parseInt(input.nextLine());
							System.out.print("\nDigite o valor da decucao da casa\n");
							dedcasa = Integer.parseInt(input.nextLine());
							SeguroCasa segc = new SeguroCasa(num,nome,rua,cidade,estado,cep,valor,premio,dedcasa,anoc);
							seg.add(segc);
							break;

mas ainda continua não imprimindo nada ;\

alguem?