Entry not executed [duplicate]

6

I am a beginner in development and I am doing a job for college, but in my case of Creation of Cadastre the line 147 ( cadastro[1][codigo] = entrada.nextLine(); ) that would receive the data of the name of the client is not being executed, what am I missing? I've been standing for 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);



  }
}
    
asked by anonymous 30.11.2015 / 12:13

1 answer

6

Because there is a nextInt() before and when you press enter on it, a line escape character is generated that is not captured by Scanner . Then, on arriving at the next nextLine(); , Scanner will catch this escape (or newline character, \n ).

A workaround to resolve this is to add a entrada.nextLine() soon after submenuOp = entrada.nextInt(); , as this 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

    
30.11.2015 / 12:19