Classe Scanner - Erro ao dar <Enter>

4 respostas
G

Alguem pode dar uma ajuda???

http://www.guj.com.br/posts/list/77982.java

Vlwwwws

4 Respostas

G

Alguem sabe me dizer como resolver o problema do código abaixo, sem gambiarra?
O nextInt() está recebendo um 'enter' e o método nextLine() recebe e interpreta este 'enter'.

Uma gambiarra para resolver foi:
String lixo;
lixo = leitor.nextLine();

Se eu utilizar o metodo next() e escrever nome e sobrenome, o espaço será intepretado e excluira o sobrenome.

import java.util.Scanner;   
  
public class FuncionarioTestDrive {   
       
    public static void main(String[] args) {   
        
	Scanner leitor = new Scanner(System.in);   
        Funcionario func = new Funcionario(0, 0, "");   
           
        System.out.print("Digite o codigo do funcionario: ");   
        func.setCodigo(leitor.nextInt());   
  
        System.out.print("Digite agora o fone do funcionario: ");   
        func.setFone(leitor.nextInt());   

	String lixo;  
	lixo = leitor.nextLine();

        System.out.print("Digite agora o nome do funcionario: ");   
        func.setNome(leitor.nextLine());   
  
        System.out.println("Agora, vamos exibir as informacoes do funcionario");   
        System.out.println("");   
        func.mostraInfo();   
           
        System.out.println("Fim!\n");   
    }   
  
}

--------------------

public class Funcionario {   
       
    /*  
     * Variaveis de instancia  
     */   
    private int codigo;   
    private int fone;   
    private String nome;   
       
    /**  
     * Construtor da classe Funcionario  
     * @param novoCodigo, novoFone, novoNome Os novos atributos do funcionario  
     */   
    public Funcionario(int novoCodigo, int novoFone, String novoNome) {   
        codigo = novoCodigo;   
        fone = novoFone;   
        nome = novoNome;   
    }   
       
    /**  
     * Metodo acessador de codigo  
     * @return codigo O codigo do funcionario  
     */   
    public int getCodigo() {   
        return codigo;   
    }   
       
    /**  
     * Metodo acessador de fone  
     * @return fone O fone do funcionario  
     */   
    public int getFone() {   
        return fone;   
    }   
       
    /**  
     * Metodo acessador de nome  
     * @return nome O nome do funcionario  
     */   
    public String getNome() {   
        return nome;   
    }   
       
    /**  
     * Metodo modificador de codigo  
     * @param novoCodigo O novo codigo do funcionario  
     */   
    public void setCodigo(int novoCodigo) {   
        codigo = novoCodigo;   
    }   
       
    /**  
     * Metodo modificador de fone  
     * @param novoFone O novo fone do funcionario  
     */   
    public void setFone(int novoFone) {   
        fone = novoFone;   
    }   
       
    /**  
     * Metodo modificar de nome  
     * @param novoNome O novo nome do funcionario  
     */   
    public void setNome(String novoNome) {   
        nome = novoNome;   
    }   
       
    /**  
     * Metodo que vai mostrar as informacoes do funcionario  
     */   
    public void mostraInfo() {   
        System.out.println("Funcionario " + codigo);
	System.out.println();   
        System.out.println("Nome: " + nome);   
	System.out.println();   
        System.out.println("Fone: " + fone);   
        System.out.println("");   
    }     
}
Neto.Sabio

vou dar uma olhada e ja posto o resultado

Neto.Sabio

tenta usar assim

public static void main(String[] args) {

int codigo = 0;  
	int fone = 0;  
	String nome = "";  
	Scanner leitor = new Scanner(System.in);  
	Funcionario func = new Funcionario(0, 0, "");  

	System.out.print("Digite o codigo do funcionario: ");  
	codigo = leitor.nextInt();
	//func.setCodigo(leitor.nextInt());  

	System.out.print("Digite agora o fone do funcionario: ");  
	fone = leitor.nextInt();
	//func.setFone(leitor.nextInt());  
	
	System.out.print("Digite agora o nome do funcionario: ");  
	nome = leitor.nextLine();
	//func.setNome(leitor.nextLine());  

	System.out.println("Agora, vamos exibir as informacoes do funcionario");  
	System.out.println("");  

	func.setCodigo(codigo);
	func.setFone(fone);
	func.setNome(nome);
	
	func.mostraInfo();  

	System.out.println("Fim!\n");  
}

me avisa o resultado

abraços

G

Então o problema foi ‘resolvido’, mas trata-se de um BUG não corrigido.

http://www.guj.com.br/posts/list/77982.java

e a solução é a que mostrei abaixo msm:

String lixo;
lixo = leitor.nextLine();

Tem até um topico do forum da Sun…
http://forum.java.sun.com/thread.jspa?threadID=718569&messageID=4148209

Abraços

Criado 26 de dezembro de 2007
Ultima resposta 27 de dez. de 2007
Respostas 4
Participantes 2