[RESOLVIDO]Arrays não exibe conteudo

7 respostas
carloshsamaral

Pessoal tenho que fazer um trabalho e não to conseguindo fazer com que a lista apareça com os dados que forem digitados :S

o Sair e incrementar estão indo, gostaria só dessa ajuda ...

/*
 * Crie uma classe Principal contendo um menu em seu método main( ) 
 * com opções para inserir clientes, listar clientes e sair da aplicação. 
 * A classe deverá instanciar um objeto do tipo ClienteArray contendo 1000 
 * clientes e de acordo com a opção selecionada no menu, inserir o  novo 
 * cliente na lista ou listar todos os clientes já inseridos.
 
 */
import java.util.Scanner;

public class Principal {
	public static void main(String[] args) {
		Scanner teclado = new Scanner(System.in);
		Cliente clientes[] = new Cliente[100];
		MeuMenu menu = new MeuMenu();
		ClienteArray arrayCliente = new ClienteArray();
		
        
		int op, i;
        i = 0;
        do {
            op = menu.getOpcao();
            if (op == 0) {
                break;
            }
            
            switch(op){
            case 1:
            	if(i<100){
            		clientes[i] = new Cliente();
            		arrayCliente.insere(clientes[i]);
            		i++;
            	}
            	else{
            			System.out.println("Lista de clientes cheia.");
            		}
            	break;
            case 2:
            	//clientes.toString();
            	arrayCliente.listarTodos(clientes, i);
            	break;
            default:
            	System.out.println("Opção invalida!");
        
        
       
        }
        }
        while (true);
	}
}
import java.util.Scanner;


public class MeuMenu {
    private Scanner teclado = new Scanner(System.in);
    public int getOpcao(){
        System.out.println("---------------------");
        System.out.println("Menu Principal");
        System.out.println("---------------------");
        System.out.println("1 - Incluir");
        System.out.println("2 - Listar Todos");
        System.out.println("0 - Sair");
        System.out.println("---------------------");
        System.out.print("Selecione uma das opcões acima: ");
        return teclado.nextInt();
    }
    
}
/*3. Crie uma classe ClienteArray contendo:
a) um atributo clientes que é um Array com referências para clientes.
b) Dois construtores: um sem parâmetros que inicializa o array 
clientes para conter até 100 objetos do tipo Cliente e outro que recebe 
como parâmetro o tamanho do array. Ambos devem instanciar o array.
b) métodos void insere(Cliente c) e Cliente[] listaClientes(). O primeiro 
recebe um Cliente e o insere no array. O segundo retorna um array de clientes 
com todos os clientes cadastrados.
 */
import java.util.Scanner;

;
public class ClienteArray {

	private Scanner tecladoScanner = new Scanner(System.in);

	private Cliente clientes[];

	public ClienteArray() {
		// /super();
		// this.clientes = clientes;

		for (int i = 0; i <= 100; i++) {
			// Cliente clientes[] = new Cliente[100];
		/*	System.out.println("Digite o nome do cliente: ");
			clientes[i].setNome(tecladoScanner.next());

			System.out.println("Digite o telefone do cliente: ");
			clientes[i].setFone(tecladoScanner.next());

			System.out.println("Digite a renda do cliente: ");
			clientes[i].setRenda(tecladoScanner.nextDouble());*/
			

		}
	}

	public ClienteArray(Cliente[] clientes) {
		// super();
		// this.clientes = clientes;
		for (int i = 0; i <= clientes.length; i++) {
			// Cliente clientes[] = new Cliente[100];
		/*	System.out.println("Digite o nome do cliente: ");
			clientes[i].setNome(tecladoScanner.next());

			System.out.println("Digite o telefone do cliente: ");
			clientes[i].setFone(tecladoScanner.next());

			System.out.println("Digite a renda do cliente: ");
			clientes[i].setRenda(tecladoScanner.nextDouble());*/

		}
	}

	void insere(Cliente c) {
		
		
		System.out.println("Digite o nome do cliente: ");
		c.setNome(tecladoScanner.next());

		System.out.println("Digite o telefone do cliente: ");
		c.setFone(tecladoScanner.next());

		System.out.println("Digite a renda do cliente: ");
		c.setRenda(tecladoScanner.nextDouble());
	}
	
	public void listarTodos (Cliente[] listaClientes, int qtd){
		
		for(int i=0;i<qtd;i++){
	           System.out.println("Nome:      " + clientes[i].getNome());
	           System.out.println("Telefone:     " + clientes[i].getFone());
	           System.out.println("Renda:  " + clientes[i].getRenda());
	        }
		
	}

}
public class Cliente {
	private int id;
	private String nome, fone;
	private double renda;

	public Cliente() {
		//super();
		this(-1,null,null,-1);
	}
	
	public Cliente(String nome, String fone){
		this(-1,nome,fone,-1);
		
	}

	public Cliente(int id, String nome, String fone, double renda) {
		super();
		this.id = id;
		this.nome = nome;
		this.fone = fone;
		this.renda = renda;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getFone() {
		return fone;
	}

	public void setFone(String fone) {
		this.fone = fone;
	}

	public double getRenda() {
		return renda;
	}

	public void setRenda(double renda) {
		this.renda = renda;
	}

	public String toString(){  
        return "ID: "+this.id +" Nome: "+ this.nome +" Telefone: "+fone +" Renda: "+renda;  
    }  
}

7 Respostas

Diguinho.Max

amigo pelo que entendi do seu metodo insere ele só está setando os valores digitados no cliente. acho que está faltando vc add o objeto cliente no seu array que nao consegui localizar este comando. no seu metodo incluir no menu vc só faz a inserção de valores chamando o seu objeto arrayCliente. obeserve nele que está faltando um

clientes[i].add(cliente);
carloshsamaral
Amigo fica dando o seguinte erro <blockquote>Exception in thread “main” java.lang.NullPointerException

at ClienteArray.listarTodos(ClienteArray.java:71)

at Principal.main(Principal.java:40)</blockquote>

Tentei fazer como vc falou e não foi :S

jaboot
Tenta mudar isso
for(int i=0;i<qtd;i++){
Pra isso
for(int i=0;i<=qtd;i++){
rafaduka

Tomei a liberdade e modifiquei um pouco, tente fazer assim:

[size=9]Cliente.java[/size]:
public class Cliente {
	private int id;
	private String nome, fone;
	private double renda;

	public Cliente() {
		// super();
		this(-1, null, null, -1);
	}

	public Cliente(String nome, String fone) {
		this(-1, nome, fone, -1);

	}

	public Cliente(int id, String nome, String fone, double renda) {
		super();
		this.id = id;
		this.nome = nome;
		this.fone = fone;
		this.renda = renda;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getFone() {
		return fone;
	}

	public void setFone(String fone) {
		this.fone = fone;
	}

	public double getRenda() {
		return renda;
	}

	public void setRenda(double renda) {
		this.renda = renda;
	}

	public String toString() {
		return "ID: " + this.id + " Nome: " + this.nome + " Telefone: " + fone
				+ " Renda: " + renda;
	}
}
[size=9]MeuMenu.java[/size]:
import java.util.Scanner;

public class MeuMenu {
	private Scanner teclado = new Scanner(System.in);

	public int getOpcao() {
		System.out.println("---------------------");
		System.out.println("Menu Principal");
		System.out.println("---------------------");
		System.out.println("1 - Incluir");
		System.out.println("2 - Listar Todos");
		System.out.println("0 - Sair");
		System.out.println("---------------------");
		System.out.print("Selecione uma das opcões acima: ");
		return teclado.nextInt();
	}

}
[size=9]ClienteArray.java[/size]:
import java.util.ArrayList;
import java.util.List;

public class ClienteArray {  
  
	private List<Cliente> clientes;
	
	public ClienteArray() {
		if (null == clientes)
			clientes = new ArrayList<Cliente>();
	}
	
    public void insere(Cliente c) {
        clientes.add(c);
    }
      
    public void listarTodos() {
		for(Cliente c : clientes) {
		   
		   System.out.println("Nome:      " + c.getNome());  
           System.out.println("Telefone:  " + c.getFone());  
           System.out.println("Renda:     " + c.getRenda());
           System.out.println("==========================");
		}
    }
}
[size=9]Principal.java[/size]:
import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {
	
		Scanner tecladoScanner = new Scanner(System.in);  
        MeuMenu menu = new MeuMenu();  
        ClienteArray arrayCliente = new ClienteArray();  
        int op = 0;
          
        do {  
            op = menu.getOpcao();  
            if (op == 0) {  
                break;  
            }  
              
            switch(op) {  
				case 1:  
					Cliente c = new Cliente();
					
					System.out.println("Digite o nome do cliente: ");
					c.setNome(tecladoScanner.next()); 	
					
					System.out.println("Digite o telefone do cliente: ");
					c.setFone(tecladoScanner.next()); 
					
					System.out.println("Digite a renda do cliente: ");
					c.setRenda(tecladoScanner.nextDouble()); 
					
					arrayCliente.insere(c);  
					break;
					
				case 2:  
					arrayCliente.listarTodos();  
					break;  
					
				default:  
					System.out.println("Opção invalida!");  
			}  
		}  
        while (true);
		
		
    }  
}
carloshsamaral

Amigo rafaduka , muito obrigado agora está rodando vou analisar o seu código e ver aonde eu errei !!

PS: Obrigado a todos que ajudaram :smiley:

rafaduka
Você estava errando nesse ponto:
public void listarTodos (Cliente[] listaClientes, int qtd){  
          
        for(int i=0;i<qtd;i++){  
               System.out.println("Nome:      " + clientes[i].getNome());  
               System.out.println("Telefone:     " + clientes[i].getFone());  
               System.out.println("Renda:  " + clientes[i].getRenda());  
            }  
          
    }
Você estava dando um loop sobre a qtd, onde deveria ser assim:
for(int i=0; i<listaClientes.length; i++)
Apesar de funcionar, não estava dentro das "boas práticas de programação". Por isso, utilizei List ao invés de Array
carloshsamaral

Ah sim, eu não to começando o curso de JAVA na faculdade estou no terceiro periodo e o trabalho é com array ainda não vimos List, vou modifica-lo aqui … Mesmo assim obrigado pela ajuda !!

Criado 27 de março de 2012
Ultima resposta 27 de mar. de 2012
Respostas 7
Participantes 4