Problemas com o Scanner

4 respostas
A

fale galera!

estou fazendo um exercicio da apostila caelum sobre o sistema interno de um banco resolvi melhorar ele fazendo com que os dados da classe funcionario seja inserido pelo teclado porem estou tendo dificuldade no uso do java.util.scanner em algumas nessa partes

a primeira essa:

String datadeentrada=input.nextLine();

se eu digitar por exemplo 14.12.99 da erro porem se eu digitar 14 de dezembro ... vai normal
porem isso entra na segunda dificuldade onde eu tenho que digitar os dados duas vezes e seguindo esse padrao acima quando vou digitar a pela segunda vez o departamento ele da um erro

e a terceira e que a minha intençao era que ficasse nesse padrao aqui

digite nome: " fica aguardando eu digitar"
digite departamento: " aguarda"

e nao esta ficando simplesmente fica aguardando os dados

aqui esta o codigo main :
package banco;

public class Banco {


    public static void main(String[] args) {

        
        
        Gerente gerente = new Gerente();
        gerente.fichaFuncionario();
       
   }
}

e o codigo da classe funcionario

package banco;

import java.util.Scanner;


public class Funcionario {

   private String nomeFuncionario;
   private String departamento;
   private double salario;
   private String dat_entrada;
   private int rg;
   private boolean ativo=true;
   

    Scanner entrada = new Scanner(System.in);
        
        Scanner input = new Scanner(System.in);
        String nomefuncionario=input.nextLine();
        String nomedepartamento=input.nextLine();
        double dadosSalario=input.nextDouble();
        String datadeentrada=input.nextLine();
        int dadosRG=entrada.nextInt();
        
   public void setNomeFuncionario(String nomefuncionario){
      System.out.println("Digite nome:");
       this.nomeFuncionario=nomefuncionario;  
    }
    
   public void setDepartamento(String nomedepartamento){
        System.out.println("Digite departamento:");
        this.departamento=nomedepartamento;
   }
   
   public void setSalario(double dadosSalario){
       System.out.println("Digite salario");
     this.salario=dadosSalario;
   }
   
   public void setDatadeEntrada(String datadeentrada){
       System.out.println("Digite data:");
       this.dat_entrada=datadeentrada;
   }
   
   public void setRg(int dadosRG){
        
       this.rg=dadosRG;
   }
   
   
   public String getNomeFuncionario(){
     return this.nomeFuncionario=nomefuncionario; 
     
    }
    
   public String getDepartamento(){
        return this.departamento=nomedepartamento;
   }
   
   public double getSalario(){
     return this.salario=dadosSalario;
   }
   
   public String getDatadeEntrada(){
       return this.dat_entrada=datadeentrada;
   }
   public double getRg(){
       return this.rg=dadosRG;
   }
      
   
  
   void mostraNomeFuncionario(){
    System.out.println(this.nomeFuncionario);
}
   
    void verifica_ativo() {
        if(this.ativo==false){
            System.out.println("Funcionario nao faz mais parte da empresa.");
       }else{
            System.out.println("Funcionario devidamente empregado na empresa.");
        }
           
      
      
   } 
   
    boolean bonifica (double dados){
        System.out.println("Defina o valor da bonificaçao:");this.salario= this.salario* dados;
        return true;
    }
    
    boolean demissao(){//funciona
        if (ativo=true){
           this.ativo=false;
           System.out.println("Funcionario " + this.nomeFuncionario + " acaba de ser demitido!");
           return true;
     }else{
            System.out.println("Funcionario ja foi demitido.");
            return false;
        }
    }
    
    public void fichaFuncionario(){
        System.out.println("=Preenchendo Ficha de Funcionario=");
        System.out.println("Nome:"+ this.getNomeFuncionario());
        System.out.println("Departamento:"+this.getDepartamento());
        System.out.println("Salario:"+this.getSalario());
        System.out.println("Data de entrada:"+this.getDatadeEntrada());
        System.out.println("RG:"+this.getRg());
        System.out.println("Situaçao:");this.verifica_ativo();
    }
   
    
}

grato pela ajuda!

4 Respostas

A

Ninguem ? :shock:

caio.ribeiro.pereira

Amigo você esta usando o Scanner de forma errada, veja um exemplo básico de como deveria ser:

public class Teste{

     public static void main(String[] args){

            Scanner input = new Scanner(System.in);

            //Primeiro você imprime a mensagem de Texto:
            System.out.println("Digite seu nome: ");
            //Agora você utiliza o Scanner
            //O método nextLine() aguarda qualquer String digitada até apertar ENTER.
            String nome = input.nextLine();

            System.out.println("Digite sua idade: ");
            // Quando precisar ler entrada de outros tipos de dados como por exemplo um "int"
            int idade = input.nextInt();

            System.out.println("Olá "+nome+" de "+idade+" anos.");

     }
}

Para você ter uma referência de outros métodos legais da classe Scanner segue o link do JDoc dela:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

Espero ter ajudado e qualquer dúvida é só gritar no GUJ!!

F

Você precisa fazer um método para entrar com os dados. Veja que vc está tentando executar código fora de método nenhum.

Faça algo do tipo:

private void pegarDados() { Scanner input = new Scanner(System.in); String nomefuncionario=input.nextLine(); String nomedepartamento=input.nextLine(); double dadosSalario=input.nextDouble(); String datadeentrada=input.nextLine(); int dadosRG=input.nextInt(); }

A

Muito obrigado Caio e Felipe resolvi aqui

criei outro metodo e chamei primeiro ele no MAIN eu so tive que usar na variavel que pega a data de entrar o input.next() pois usando nextline quando compila ele pula a data direto pra RG

o codigo agora esta assim !

package banco;

import java.util.Scanner;


public class Funcionario {

   private String nomeFuncionario;
   private String departamento;
   private double salario;
   private String dat_entrada;
   private int rg;
   private boolean ativo=true;
    private String nomefuncionario;
    private String nomedepartamento;
    private double dadosSalario;
    private String datadeentrada;
    private int dadosRG;
   

   
   
    void pegaDados (){    
        Scanner input = new Scanner(System.in);
        Scanner entrada= new Scanner(System.in);
        System.out.println("Digite nome:");
         nomefuncionario=input.nextLine();
        
        System.out.println("Digite departamento:");
         nomedepartamento=input.nextLine();
        
        System.out.println("Digite salario");
         dadosSalario=input.nextDouble();
        
        System.out.println("Digite data:");
         datadeentrada=input.next();
        
        System.out.println("Digite Rg:");
        dadosRG=entrada.nextInt();
    }        
    
   public void setNomeFuncionario(String nomefuncionario){
      
       this.nomeFuncionario=nomefuncionario;  
    }
    
   public void setDepartamento(String nomedepartamento){
        
        this.departamento=nomedepartamento;
   }
   
   public void setSalario(double dadosSalario){
       
     this.salario=dadosSalario;
   }
   
   public void setDatadeEntrada(String datadeentrada){
       
       this.dat_entrada=datadeentrada;
   }
   
   public void setRg(int dadosRG){
        
       this.rg=dadosRG;
   }
   
   
   public String getNomeFuncionario(){
     return this.nomeFuncionario=nomefuncionario; 
     
    }
    
   public String getDepartamento(){
        return this.departamento=nomedepartamento;
   }
   
   public double getSalario(){
     return this.salario=dadosSalario;
   }
   
   public String getDatadeEntrada(){
       return this.dat_entrada=datadeentrada;
   }
   public double getRg(){
       return this.rg=dadosRG;
   }
      
   
  
   void mostraNomeFuncionario(){
    System.out.println(this.nomeFuncionario);
}
   
    void verifica_ativo() {
        if(this.ativo==false){
            System.out.println("Funcionario nao faz mais parte da empresa.");
       }else{
            System.out.println("Funcionario devidamente empregado na empresa.");
        }
           
      
      
   } 
   
    boolean bonifica (double dados){
        System.out.println("Defina o valor da bonificaçao:");this.salario= this.salario* dados;
        return true;
    }
    
    boolean demissao(){//funciona
        if (ativo=true){
           this.ativo=false;
           System.out.println("Funcionario " + this.nomeFuncionario + " acaba de ser demitido!");
           return true;
     }else{
            System.out.println("Funcionario ja foi demitido.");
            return false;
        }
    }
    
    public void fichaFuncionario(){
        System.out.println("=Preenchendo Ficha de Funcionario=");
        System.out.println("Nome:"+ this.getNomeFuncionario());
        System.out.println("Departamento:"+this.getDepartamento());
        System.out.println("Salario:"+this.getSalario());
        System.out.println("Data de entrada:"+this.getDatadeEntrada());
        System.out.println("RG:"+this.getRg());
        System.out.println("Situaçao:");this.verifica_ativo();
    }
   
    
}

Valeu mesmo ! =D

Criado 23 de abril de 2012
Ultima resposta 24 de abr. de 2012
Respostas 4
Participantes 3