Boa noite pessoal. Sou novo no fórum assim como no Java e gostaria da ajuda de vocês.
Estou estudando através de um projeto que fiz, da seguinte forma.
[code]import java.util.Scanner;
public class Main {
@SuppressWarnings("resource")
public static void main (String[] args) {
Cliente c = new Cliente();
InputCliente inCliente = new InputCliente();
OutputCliente outCliente = new OutputCliente();
Lista listar = new Lista();
int opcao = 0;
while(opcao != 9) {
System.out.println("**** MENU DE OPÇÕES ****");
System.out.println("1 - Cadastrar");
System.out.println("2 - Listar");
System.out.println("9 - Sair");
System.out.print("Entre com o opção: ");
Scanner in = new Scanner(System.in);
opcao = in.nextInt();
if(opcao == 9) {
System.out.println("Obrigado por utilizar o sistema!");
break;
}
switch(opcao) {
case 1:
String nome = inCliente.lerNome();
String telefone = inCliente.lerTelefone();
c.setNome(nome);
c.setTelefone(telefone);
listar.lista().add(c);
break;
case 2:
for(Cliente c1 : listar.lista()) {
outCliente.imprimir(c1);
}
break;
default:
System.out.println("Opção inválida. Tente novamente");
break;
}
}
}
}
[/code]
Gostaria de, assim que for dado a entrada nas informações do cliente, gravá-lo em uma lista para imprimir a mesma na opção 2 mas quando seleciono a opção 2 nada é impresso.
Aqui está classe Lista que provavelmente não está fazendo nada.
No código abaixo, toda vez que você chama o método lista() vc está criando uma nova lista e retornando essa nova lista.
public List<Cliente> lista() {
List<Cliente> listar = new ArrayList<>();
return listar;
}
Tente alterar a classe Lista para o código abaixo e teste novamente
[quote=Emersonsts]No código abaixo, toda vez que você chama o método lista() vc está criando uma nova lista e retornando essa nova lista.
public List<Cliente> lista() {
List<Cliente> listar = new ArrayList<>();
return listar;
}
Tente alterar a classe Lista para o código abaixo e teste novamente
Agradeço a ajuda de todos por me esclarecerem em minha dúvida.
Segue abaixo como ficou o novo código.
OBS: dispensei a classe Lista e criei uma nova lista de Cliente dentro da classe Main mesmo -> Lista listagem = new ArrayList();
Retirei o objeto Cliente c da declaração global e o transferi para o case 1: (obrigado ao wilkem)
Dessa forma um novo Cliente é criado a cada cadastro e inserção na lista, não mais repetindo-se as entradas.