Buffer cheio?

3 respostas
P

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&gt;&lt;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&lt;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&lt;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&gt;&lt;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&lt;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;
			}
}

}

}

&gt;

3 Respostas

P
import java.util.Scanner;

class Pessoa {

private int status=0;

private String Nome,Telefone,E_mail;

private Endereço End = new Endereço();

private int Idade;
[b]Pessoa() [/b]{ status = 1;}

public String getNome() { return Nome; }
public void setNome(String Nome) { this.Nome = Nome; }
public String getTelefone(){ return Telefone;}
public void setTelefone(String Telefone){ this.Telefone= Telefone;}
public String getE_mail(){ return E_mail;}	
public void  setE_mail(String E_mail){this.E_mail=E_mail;}
public void leDados(){

Scanner scan = new Scanner(System.in);

System.out.println("Entre com os dados: ");

System.out.println("Entre com o nome completo: ");

Nome = scan.nextLine();

System.out.println("Entre com o telefone : ");

Telefone = scan.next();

End.leEndereço();

System.out.println(Entre com o e-mail :);

E_mail = scan.next();
}

[b]public int getStatus() [/b]{
	return status;
}
[b]public void setStatus[/b](int status){
     this.status=status;
}

public String getEndereço(){

return End.toString();

}

 public void setEstado(String Estado){

End.Estado=Estado;
}
public void setCidade(String Cidade){

End.Cidade=Cidade;

}

public void setRua(String Rua){

End.Rua=Rua;

}

public void setNro(int Nro){

End.Nro=Nro;

}

 public void setCEP(String CEP){

End.CEP=CEP;

}

}

P
import java.util.Scanner;

class Endereço {

public String Rua, Bairro, Estado, Cidade,CEP;

public int Nro;
[b]public void leEndereço()[/b] {
  Scanner tec = new Scanner(System.in);
  System.out.println("Entre com o Estado :");
	Estado = tec.nextLine();
  System.out.println("Entre com a Cidade :");
    Cidade = tec.nextLine();
  System.out.println("Entre com o Bairro: ");
    Bairro = tec.nextLine();
  System.out.println("Entre com a Rua :");
	Rua = tec.nextLine();
  System.out.println("Entre com o Numero:");
	Nro = tec.nextInt();
  System.out.println("Entre com o CEP :");
	CEP = tec.next();
}

public String toString() {

return "Estado: +Estado+”\nCidade: +Cidade+”\nBairro: +Bairro+”\nRua: +Rua+”\nNumero: +Nro+”\nCEP: "+CEP;

}

}

P

Já consegui Obrigado pela ajuda de vcs :grin:

Criado 8 de outubro de 2008
Ultima resposta 10 de out. de 2008
Respostas 3
Participantes 1