Olá pessoal , eu estava fazendo um simulador de banco de dados mas no método “altera”, dentro switch que usa a variável opc o scanner pega o enter( mesmo sendo nextLine() ), como faço pra corrigir isso?
import java.util.Scanner;
class Agenda {
public static void main(String[] args)
{
//int N = leDimensao(“Digite a quantidade de amigos”);
Pessoa [] P = new Pessoa[1000];
int qtd=0;
int op;
do{
op = menu();
switch (op){
case 1: { qtd = inserir(P,qtd); //qtd<N
break;
}
case 2:{
buscar(P,qtd);
break;
}
case 3: if (qtd!=0){
remover(P,qtd);
break;
}
case 4: {
imprimir(P,qtd);
break;
}
case 5: {break; }
default: System.out.println("Opcao Invalida");
}
}while (op!=5);
}
[b]public static int menu()[/b] {
System.out.println("\n\nSIMULADOR DE BANCO DE DADOS\n\n");
System.out.println("[1] inserir");
System.out.println("[2] buscar");
System.out.println("[3] remover");
System.out.println("[4] listar");
System.out.println("[5] sair");
Scanner tec = new Scanner(System.in);
return tec.nextInt();
}
[b]public static int inserir(Pessoa [] P, int qtd)[/b] {
Scanner scan = new Scanner(System.in);
String resp;
int i=qtd;
if(qtd><P.length){
do{
P[i]=new Pessoa();
P[i].leDados();
i++;
do{
System.out.println("Deseja cadastrar mais alguem? (SIM/NAO)");
resp = scan.next();
}while(resp.equalsIgnoreCase("sim")==false && resp.equalsIgnoreCase("nao")==false);
qtd++;
if(qtd==P.length){
System.out.println("O Banco de Dados esta cheio");
return qtd;
}
}while (resp.equalsIgnoreCase("sim"));
return qtd++;
}
else {
do{
int teste=-1;
for(int j=0;j<P.length;j++){
if(P[j].getStatus()==0){
teste=j;
break;
}
}
if(teste!=-1){
P[teste]=new Pessoa();
P[teste].leDados();
System.out.println("Deseja cadastrar mais alguem? (SIM/NAO)");
resp = scan.next();
}
else {
System.out.println("O Banco de dados esta cheio \nremova uma conta se deseja cadastrar mais alguem");
return qtd;
}
}while(resp.equalsIgnoreCase("sim"));
return qtd;
}
}
[b]public static void remover(Pessoa [] P,int qtd)[/b] {
Scanner scan = new Scanner(System.in);
String name,resp;
int pos;
do{
System.out.println("Entre com o nome do cliente:");
name= scan.nextLine();
pos=buscar(P,name,qtd);
}while(pos==-1);
do{
System.out.println("Tem certeza que deseja excluir "+name+" ?(SIM,NAO)");
resp = scan.next();
}while(resp.equalsIgnoreCase("sim")==false && resp.equalsIgnoreCase("nao")==false);
if(resp.equalsIgnoreCase("sim"))
P[pos].setStatus(0);
}
[b]public static int buscar(Pessoa [] P, String nome,int qtd)[/b]{
for(int i=0;i<qtd;i++){
if(P[i].getNome().equals(nome)==true && P[i].getStatus()!=0)
return i;
}
return -1;
}
[b]public static void imprimir(Pessoa []P, int qtd)[/b] {
for(int i=0; i><qtd; i++){
System.out.println("\n");
if (P[i].getStatus()==1)
System.out.println("Nome: "+P[i].getNome()+"\nTelefone: "+P[i].getTelefone()+"\nE-mail: "+P[i].getE_mail()+"\nEndereco: "+P[i].getEndereço());
}
}
public static void buscar(Pessoa []P,int qtd){
Scanner scan = new Scanner(System.in);
int pos=-1;
boolean teste=true;
do{
if(teste==false)
System.out.println("Cliente nao encontrado");
System.out.println("Entre com o nome completo do cliente :");
String nome = scan.nextLine();
for(int i=0;i<qtd;i++){
if(P[i].getNome().equals(nome)){
pos=i;
break;
}
}
if(pos==-1)
teste=false;
}while(pos==-1);
altera(P,pos);
}
public static void altera(Pessoa []P,int pos){
Scanner scan = new Scanner(System.in);
int opc;
do{
System.out.println(“Deseja alterar qual dado desse cliente: “);
System.out.println(”[1]: Nome\n[2]: Telefone\n[3]: E-mail\n[4]: Endereco”);
opc = scan.nextInt();
}while(opc!=1 && opc!=2 && opc!=3 && opc!=4);
switch(opc) {
case 1: {
System.out.println("Digite um novo nome :");
P[pos].setNome(scan.nextLine());
break;
}
case 2: {
System.out.println("Digite um novo telefone :");
P[pos].setTelefone(scan.next());
break;
}
case 3: {
System.out.println("Digite um novo e-mail :");
P[pos].setE_mail(scan.nextLine());
break;
}
case 4: {
int op;
do{
System.out.println("Digite a opcap :");
System.out.println("[1]: Estado\n[2]:Cidade\n[3]: Rua\n[4]: Numero\n[5]:CEP:");
op=scan.nextInt();
}while(op!=1 && op!=2 && op!=3 && op!=4 && op!=5);
switch(op){
case 1: { System.out.println("Entre com um novo Estado");
P[pos].setEstado(scan.nextLine()) ;
break;
}
case 2:{ System.out.println("Entre com uma nova Cidade");
P[pos].setCidade(scan.nextLine()) ;
break;
}
case 3: { System.out.println("Entre com uma nova Rua");
P[pos].setRua(scan.nextLine()) ;
break;
}
case 4:{ System.out.println("Entre com uma novo N°");
P[pos].setNro(scan.nextInt());
break;
}
case 5:{ System.out.println("Entre com uma novo CEP");
P[pos].setCEP(scan.nextLine());
break;
}
}
break;
}
}
}
}
>
