GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Java.util.Scanner - HELP!


#1

E aí galera...
Fiz um exercício e tá dando pau no Scanner mas apenas na segunda repetição (e talvez nas próximas) do while... alguém me ajuda please?

Valeu!!!

package Salarios;
import java.util.Scanner;
public class Salarios {
    public static void main(String[] args) {
        double salarioHora;
        double salarioExtra;
        double salarioBruto;
        int horas;
        String nomeEmpregado;
        int contador = 0;
        Scanner input = new Scanner( System.in );
        while( contador < 3 ) {
            System.out.print("Digite o nome do empregado: ");
            nomeEmpregado = input.nextLine();
            System.out.print("Digite as horas trabalhadas: ");
            horas = input.nextInt();
            System.out.print("Digite o salario-hora: ");
            salarioHora = input.nextDouble();
            if ( horas < 41 ) {
                salarioBruto = salarioHora * horas;
                System.out.println("Salario bruto: R$" + salarioBruto );
            }
            else {
                salarioExtra = ( horas - 40 ) * (salarioHora + salarioHora * 0.5 );
                salarioBruto = salarioExtra + ( salarioHora * 40 );
                System.out.println("SalarioBruto: R$" + salarioBruto);
            }
            contador = contador + 1;
        }
    }
}

O erro é na execução:

Digite o nome do empregado: Luis Paiva
Digite as horas trabalhadas: 40
Digite o salario-hora: 10
Salario bruto: R$400.0
Digite o nome do empregado: Digite as horas trabalhadas: Luis
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at Salarios.Salarios.main(Salarios.java:30)


Aparece os dois prompts na mesma linha e qdo digito Luis deu esse erro.
Help??


#2

Hawk,

Substitua o:
nomeEmpregado = input.nextLine();
por
nomeEmpregado = input.next();

Esse erro é que ele está pulando a entrada do nome na segunda vez que passa pelo loop e pedindo direto o valor, e neste valor vc está entrando com um campo alfanumérico.

Faz um teste: digita na primeira vez no campo valor um texto qualquer que vc vai ver que esse erro ocorrerá, pois no valor vc pega com input.nextInt() e input.nextDouble()

ASOBrasil


#3

pô brigadão ASOBrasil!

Qual a diferença do nextLine() e do next?

Por que quando counter = 0 ele funciona normal, e apenas na próxima repetição dá esse pau??

obrigado!


#4

ae parceiro fiz umas mudanças basica no seu code veja ai!!

import java.util.Scanner;
 public class Salarios {
     public static void main(String[] args) {
         double salarioHora;
         double salarioExtra;
         double salarioBruto;
         int horas;
         int contador = 0;
         Scanner input = new Scanner( System.in );
	 while( contador < 3 ) {
	contador = contador + 1;
	System.out.println("Digite o nome do empregado: ");
	String nomeEmpregado = input.next();
             System.out.println("Digite as horas trabalhadas: ");
             horas = input.nextInt();
             System.out.println("Digite o salario-hora: ");
             salarioHora = input.nextDouble(); 
             if ( horas < 41 ) {
                 salarioBruto = salarioHora * (horas);
                 System.out.printf("Salario bruto: R$%.2f\n",salarioBruto );
             }
             else {
                 salarioExtra = (double)( horas - 40 ) * (salarioHora + salarioHora * 0.5 );
                 salarioBruto = salarioExtra + ( salarioHora * 40 );
                 System.out.printf("SalarioBruto: R$%.2f\n ",salarioBruto);
             }
     	}    
     }
 }

#5

import java.util.Scanner;

public class AccountTest
{
// método principal inicia a execução do aplicativo Java
public static void main( String args[] )
{
Account account1 = new Account( 50.00 ); // cria o objeto Account
Account account2 = new Account( -7.53 ); // cria o objeto Account

  // exibe saldo inicial de cada objeto
  System.out.printf( "account1 balance: $%.2f\n", 
     account1.getBalance() );
  System.out.printf( "account2 balance: $%.2f\n\n", 
     account2.getBalance() );

  // cria Scanner para obter entrada a partir da janela de comando
  Scanner input = new Scanner( System.in );
  double depositAmount; // quantia de depósito lida a do usuário

  System.out.print( "Enter deposit amount for account1: " ); // prompt
  depositAmount = input.nextDouble(); // obtém a entrada do usuário
  System.out.printf( "\nadding %.2f to account1 balance\n\n", 
     depositAmount );
  account1.credit( depositAmount ); // adiciona o saldo de account1

  // exibe os saldos
  System.out.printf( "account1 balance: $%.2f\n", 
     account1.getBalance() );
  System.out.printf( "account2 balance: $%.2f\n\n", 
     account2.getBalance() );

  System.out.print( "Enter deposit amount for account2: " ); // prompt
  depositAmount = input.nextDouble(); // obtém a entrada do usuário
  System.out.printf( "\nadding %.2f to account2 balance\n\n", 
     depositAmount );
  account2.credit( depositAmount ); // adiciona ao saldo de account2

  // exibe os saldos
  System.out.printf( "account1 balance: $%.2f\n", 
     account1.getBalance() );
  System.out.printf( "account2 balance: $%.2f\n", 
     account2.getBalance() );

} // fim de main

} // fim da classe AccountTest

Estou tentando compilar este código, porém ele demonstra uma série de erros como por exemplo:
cannot resolve symbol class Scanner - line 3
cannot resolve symbol method printf (java.lang.String,double) - line 14
cannot resolve symbol method printf (java.lang.String,double) - line 16
cannot resolve symbol class Scanner - line 20
cannot resolve symbol class Scanner - line 20
cannot resolve symbol method printf (java.lang.String,double) - line 30
cannot resolve symbol method printf (java.lang.String,double) - line 32

Tentei de tudo já, mas não consigo compilar este código.


#6

import animais.Gato;
import animais.Passaro;
import java.util.Scanner;

public class ControleDeVenda {

public static void main(String args[]){
    int opçao = 0;
    Scanner c = new Scanner( System.in );

    while (opçao != 1)
    {
    	System.out.println("  Menu");
    	System.out.println("1 - Gato");
            System.out.println("2 - Passaro");
    	System.out.println("3 - Sair");
 	System.out.println("\n");
System.out.print("Escolha a opçao do menu:");
opçao = c.nextInt();
    	System.out.println("\n");
    }

    if(opçao == 1)
    {		
          Gato a1 = new Gato(01,"Todinho",15,420,"wiscas");

          System.out.println(a1);
    }	
    if(opçao == 2)
    {		
          Passaro a2 = new Passaro(02,"Rock Balboa",5,1500,true);

          System.out.println(a2);		
     }
}

}

Fiz este programa principal, e esta dando erro de "cannot resolve symbol class Scanner", não sei solucionar.Gostaria que vocês me dissessem a solução deste problema.Obrigado.


#7

nome da variável.

tira o Ç.

Edit:
Perae, com ou sem o "Ç", funciona de boa o programa.

flw.


#8

Resposta:

Consequiram solucionar o problema?
realmente,"ç" não é o problema.
Vlw


#9

Não tem problema nenhum com o Scanner cara!!
Pelo menos não nesse código que vc passou.
Olha aí:

import java.util.Scanner;
public class Teste {
	public static void main(String args[]) {
		int opçao = 0;
		Scanner c = new Scanner(System.in);
		while (opçao != 1) {
			System.out.println(" Menu");
			System.out.println("1 - Gato");
			System.out.println("2 - Passaro");
			System.out.println("3 - Sair");
			System.out.println("\n");
			System.out.print("Escolha a opçao do menu:");
			opçao = c.nextInt();
			System.out.println("\n");
			System.out.println(opçao);
		}
	}
}

Só uma coisa, ninguém está aqui para resolver problemas e sim para ajudar... Quem resolve o problema é quem está com o mesmo.

flw.


#10

Resposta:

tudo bem,
estou no trabalho no momento e não estou com acesso ao interpretador.Chegando em casa irei rever o programa.
Obrigado pela ajuda.

Agora, resolver o problema...foi um modo de dizer, o que eu queria era uma orientação na solução do programa.
Acredito que não foi correto o modo no qual vocês me trataram.

Novamente, Obrigado.


#11