Problem registering user in list

0

I'm trying to register users and put them on the list. Initially I just tried to register and test with print. (Even though it indicates errors) Does anyone know why it is not working? The errors are:

  

can not find symbol in client.setNome (scanner.nextLine ());

and

  

Client Constructor in class Customers can not be applied to given types;
  required: java.lang.String
  found: no arguments
  reason: current and formal arguments lists differ in length

Code:

    import java.util.ArrayList;
    import java.util.Scanner;
    public class CadastraUsuarios {

    public void menu(){
    Scanner entrada = new Scanner(System.in);
    ArrayList<Clientes> listaDeUsuarios = new ArrayList<Clientes>();
     Clientes cliente = new Clientes();      
    int op = 0;


    char opcao;

    System.out.printf("MENU DE ESCOLHAS");
    System.out.printf("A- CADASTRAR CLIENTE");
    System.out.printf("B- INSERIR O CADASTRO DE UM NOVO TIPO DE SEGURO");
    System.out.printf("C- LISTAR TODOS OS SEGUROS CADASTRADOS");
    System.out.printf("D- LISTAR TODOS OS CLIENTES CADASTRADOS");
    System.out.printf("E- LISTAR OS SEGUROS CADASTRADOS PARA UM DETERMINADO CLIENTE");
    System.out.printf("F- BUSCAR INFORMAÇÕES DE UM SEGURO PELO NÚMERO DE ÁPOLICE");
    System.out.printf("S- SAIR");

    switch(opcao){
        case 'a': System.out.printf("Cadastro de Cliente:");

        //cadastrar clientes
        break;
        case 'b': System.out.printf("");
        //inserir o cadastro de um novo tipo de seguro
        break;
        case 'c' : System.out.printf("");
        //listar todos os seguros cadastrados

        break;
        case 'd' : System.out.printf("");
        //listar todos os clientes cadastrados

        break;
        case 'e' : System.out.printf("");
        //listar os seguros cadastrados para um determinado cliente

        break;
        case 'f' : System.out.printf("");
        //buscar as informações de um seguro pelo número de apólice

        break;
        case 's' : System.out.printf("saindo do programa");
        //sair do programa

        break;



    }
    }

    public  void cadastro(){
    System.out.println("Bem vindo ao sistema de cadastros de usuários");
    System.out.println("Digite o nome do usuário");
    cliente.setNome(scanner.nextLine());
    System.out.println(cliente.getNome());
    }
    }

Client Class:

 public class Clientes
 {
 String nome; 
 String cpf; 
 String data_de_nascimento;
 String endereco;

 public Clientes(String nome)
 {
    this.nome = nome ;
    System.out.println("Construtor Funcionario");
}
    public void setNome(String nome) {
    this.nome = nome;
}
public String getNome()
{
    return nome;
}

}
    
asked by anonymous 20.10.2017 / 18:29

1 answer

3

The input variable is within the scope CadastraUsuarios.menu :

CadastraUsuarios {

    public void menu(){
    Scanner entrada = new Scanner(System.in);

You can not have access in a totally different scope than in the case it is CadastraUsuarios.cadastro :

  

In addition to that you have renamed entrada to scanner

public  void cadastro(){
System.out.println("Bem vindo ao sistema de cadastros de usuários");
System.out.println("Digite o nome do usuário");
cliente.setNome(scanner.nextLine());
System.out.println(cliente.getNome());
}

The correct one would look something like:

public class CadastraUsuarios
{
    Scanner entrada;

    public void menu()
    {
       entrada = new Scanner(System.in);
       ...
    }

    public  void cadastro(){
       ...
       cliente.setNome(entrada.nextLine());
       ...
    }

Then it will be accessible "in scope" of the whole class

Another problem cited by the @LINQ is that the Customers class waits in the constructor for a String :

public Clientes(String nome)
 {
    this.nome = nome ;
    System.out.println("Construtor Funcionario");
}

But when instantiating you did not pass anything:

ArrayList<Clientes> listaDeUsuarios = new ArrayList<Clientes>();
Clientes cliente = new Clientes();  //AQUI

By public Clientes(String nome) is expected to pass a String , as nothing has occured causes the error:

  

can not be applied to given types; required: java.lang.String found: no arguments reason: current and formal arguments lists differ in length

    
20.10.2017 / 18:44