Unexecuted entry

Asked

Viewed 100 times

6

I’m a beginner in development and I’m doing a job for college, but in my case of Register Creation line 147 (cadastro[1][codigo] = entrada.nextLine();) that would receive the customer name data is not running, what am I missing? I’m already stopped two days.

import java.util.Scanner;

public class piSol {
  public static void main(String args[]) {

    //declaração de variáveis
    int i              = 0;
    int nFunc          = 4; // quantidade de registros de usuarios;
    int statusLogin    =1;
    int segueSis       =1;
    Scanner entrada    = new Scanner(System.in);
    String[] login     = new String[2];
    String[] username  = new String[4];
    String[] password  = new String[4];
    String[] menuRef   = new String[4];
    int   [] menuCod   = new int   [4];
    int      menuOp    = 666;
    int      submenuOp = 666;

    int x,y;
    int codigo=1,alteraOp=666;
    int resAltera = 0;
    String codigoBusca = null;
    String[][] cadastro = new String[4][3];
    /*
    +------+ CADASTRO +--------+                 y /|\
    | NOME | TELEFONE | STATUS |                    |
    +------+----------+--------+                    |
    |      |          |        |                    |
    +------+----------+--------+                    |
    |      |          |        |                    |
    +------+----------+--------+                    |
    |      |          |        |                    |
    +------+----------+--------+                    +-------------------------------> x
    */

    cadastro[0][0] = "CODIGO";
    cadastro[1][0] = "NOME";
    cadastro[2][0] = "TELEFONE";
    cadastro[3][0] = "OBSERVACAO";


    //controle de subsistemas
      menuRef[0] = "Cadastro de clientes";
      menuCod[0] = 1;

      menuRef[2] = "Orçamentos";
      menuCod[2] = 2;

      menuRef[1] = "Ordens de serviço";
      menuCod[1] = 3;

    /*clientes
      clientCod[0] = 1;
      clientRef[0] = "Estagiario";
      clientTel[0] = "1234-4321";
      clientSts[0] = "Orçamento";

      clientCod[2] = 2;
      clientRef[2] = "Devil";
      clientTel[2] = "1234-4321";
      clientSts[2] = "MLK";
      */

    //usuarios cadastrados no sistemas
    //Renoir de Paula Faria dos Reis
      username[0] = "renoirfaria"; //username
      password[0] = "410141"; //password

    System.out.print("\n***** piSol - Sistema de Gerenciamento de vendas *****\n\n");
    do {

    //TELA DE LOGIN DO USUARIO
    System.out.print("Nome de usuario: ");
    login[0] = entrada.nextLine();
    System.out.print("Senha..........: ");
    login[1] = entrada.nextLine();

    //INICIO DA VALIDAÇÃO DO LOGIN
    if (login[0] == null) {
      System.out.print("Campo login vazio!");
      statusLogin = 0;
    }
    else  {
      for (i=0; i < 4; i++) {
        if (login[0].equals(username[i])) {
          //System.out.print("\n****Usuário Encontrado****\n");
          statusLogin = 1;
        }
        else {
          System.out.print("** Usuario não cadastrado\n");
          statusLogin = 0;
        }
        if (login[1].equals(password[i])) {
          //System.out.print("\n****Senha Encontrada****\n");
        statusLogin =1;
        }
        else {
          System.out.print("** Senha não equivale ao usuario\n");
          statusLogin = 0;
        }

    //INICIO DO SISTEMA
    while (statusLogin == 1) {
      //INICIO CAMADA SECUNDARIA
      while (segueSis == 1) {
        System.out.println("Bem vindo ao sistema " + login[0] + "!");
        do {
          //inicio da camada menuOp
        for (i=0; i < (menuCod.length - 1); i++) {
          System.out.println(menuCod[i] + " - " + menuRef[i]);
        }
        System.out.println("0 - Deslogar");
        System.out.print("\nOperacao: ");
        menuOp = entrada.nextInt();
        switch(menuOp) {
          //inicio da camada submenuOp
          case 1:
            while(submenuOp != 0) {
              System.out.print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
              System.out.println("***** CADASTRO DE CLIENTES *****");
              System.out.println("1 - Listar clientes.");
              System.out.println("2 - Adicionar cliente.");
              System.out.println("3 - Editar cliente.");
              System.out.println("4 - Excluir cliente.");
              System.out.println("0 - Sair.");
              System.out.print("Operacao: ");
              submenuOp = entrada.nextInt();

              switch (submenuOp) {
                case 1:
                  System.out.println("***** LISTA DE CLIENTES *****");
                  for (y=0; y < 3; y++) {
                    if ((cadastro[0][y] != null) && (cadastro[1][y] != null) && (cadastro[2][y] != null)) {
                    System.out.println("Código: "          + cadastro[0][y]);
                    System.out.println("Nome do cliente: " + cadastro[1][y]);
                    System.out.println("Telefone: "        + cadastro[2][y]);
                    System.out.println("Descrição: "       + cadastro[3][y]);
                    }
                  }
                  System.out.println("***** FIM DE LISTAGEM *****\n\n\n");
                break;
                case 2:
                  System.out.println("***** CADASTRAR CLIENTE *****");
                  System.out.println("Codigo: " + codigo);
                  System.out.println("Nome do cliente: ");
                  cadastro[1][codigo] = entrada.nextLine();
                  System.out.println("Telefone: ");
                  cadastro[2][codigo] = entrada.nextLine();
                  System.out.println("Observação: ");
                  cadastro[3][codigo] = entrada.nextLine();
                  System.out.println("***** CADASTRO CONCLUIDO *****\n\n\n");
                break;
                case 3:
                  System.out.println("***** EDITAR CLIENTE *****");
                    while(codigoBusca != null) {
                      System.out.println("Digite o código do usuário: ");
                      codigoBusca = entrada.nextLine();
                    }
                    for (y=0; y < 3; y++) {
                      if (cadastro[0][y] == codigoBusca) {
                        resAltera = y;
                        System.out.println("Código: "              + cadastro[0][y]);
                        System.out.println("1 - Nome do cliente: " + cadastro[1][y]);
                        System.out.println("2 - Telefone: "        + cadastro[2][y]);
                        System.out.println("3 - Descrição: "       + cadastro[3][y]);

                        System.out.println("Desejo alterar a o campo/linha nº: ");
                        alteraOp = entrada.nextInt();
                        switch (alteraOp) {
                          case 1:
                            System.out.println("Nome do cliente: ");
                            cadastro[1][resAltera] = entrada.nextLine();
                          break;
                          case 2:
                            System.out.println("Telefone: ");
                            cadastro[2][resAltera] = entrada.nextLine();
                          break;
                          case 3:
                            System.out.println("Observação: ");
                            cadastro[3][resAltera] = entrada.nextLine();
                          break;
                          default:
                            System.out.println("Opção inválida. Tente novamente"); // tratar melhor essa parte
                        }
                      }
                    }

                break;
                case 4:

                break;
                default:
                  for (y=0; y < 3; y++) {
                    System.out.print(cadastro[0][y] + " | ");
                    System.out.print(cadastro[1][y] + " | ");
                    System.out.print(cadastro[2][y] + " | ");
                    System.out.print(cadastro[3][y] + " | ");
                    System.out.print("\n");
                  }

              }//fim dos switch de cadastro
            }
          break;
          case 2:

          break;
          case 3:

          break;
          default:
          System.out.println("Operação inválida, insira um valor equivalente a lista.\n");
        }
      }while(menuOp != 0);

        segueSis = 0;
      }//fim do segueSis
      }//fim do statusLogin
      }
    }
  } while (statusLogin != 1);



  }
}

1 answer

6

Because there’s a nextInt() before and when you squeeze enter on it, a line escape character is generated that is not captured by Scanner. So when you get to the next nextLine(); the Scanner captures this escape (or newline character, \n).

A workaround to solve this is to add a entrada.nextLine() shortly after submenuOp = entrada.nextInt();, because that input will consume the \n generated by nextInt().

References:

How to use the Java scanner

Skipping nextLine() after using next(), nextInt() or other nextFoo() methods

Browser other questions tagged

You are not signed in. Login or sign up in order to post.