Olá pessoal
Estou fazendo um exercício básico e o mesmo está me retornando um erro, quando uso tipo double.
no caso quando digito o salário um valor inteiro, ele calcula correto, o problema é quando digito um salário fracionado, como
por exemplo: 850,75. Se digito com vírgula, ele aparece em branco, mas não dá erro.
Não deveria estar certo? Mesmo digitando com o ponto (850.75) não dá certo, ele causa uma exceção, que no caso não estou tratando.
Tem alguma coisa a ver com a formatação da saída?
importjava.util.Scanner;publicclassSalarioFuncionario{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringnome="";doublesalario=0.0;doubletotSalario=0.0;doubleacrescimo=0.0;System.out.println("Qual o nome do Funcionário?");nome=sc.next();System.out.println("Entre com valor do Salário");salario=sc.nextDouble();if(salario<=150){acrescimo=salario*0.25;totSalario=salario+acrescimo;}System.out.println("Nome: "+nome);System.out.println("Salário: "+totSalario);}}
Tenta escrever o número com ponto em vez de vírgula… exemplo:
Escreva 80.90 em vez de 80,90
Outra coisa, sempre que uso a classe Scanner eu leio o dado como String (através do método nextLine() ) e depois o converto… tenta ver se isso te ajuda!
Scannersc=newScanner(System.in);System.out.print("Digite o valor: ");doublevalor=Double.parseDouble(sc.nextLine());
ok?
R
Ronimarcos
Olá, obrigado por ter respondido.
Fiz conforme falou, mas mesmo assim, ele continua dando erro, agora ele nem deixa digitar os valores.
Segue erro:
Exception in thread “main” java.lang.NumberFormatException: empty String
Tinha que limpar o buffer… utiliza a primeira dica que dei… escrever com “.” em vez de “,”… aqui funcionou!
R
Ronimarcos
Também fiz assim e não dá erro, mas o valor fica zerado:
importjava.util.Scanner;publicclassSalarioFuncionario{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringnome="";StringtempSal="";doublesalario=0.0;doubletotSalario=0.0;doubleacrescimo=0.0;System.out.println("Qual o nome do Funcionário?");nome=sc.next();System.out.println("Entre com valor do Salário");tempSal=sc.next();salario=Double.parseDouble(tempSal);if(salario<=150){acrescimo=salario*0.25;totSalario=salario+acrescimo;}System.out.println("Nome: "+nome);System.out.println("Salário: "+totSalario);}}
[color=blue]Resultado:
run:
Qual o nome do Funcionário?
Ronimarcos
Entre com valor do Salário
850.75
Nome: Ronimarcos
Salário: 0.0
CONSTRUÍDO COM SUCESSO (tempo total: 8 segundos)[/color]
renamed
publicclassSalarioFuncionario{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringnome="";doublesalario=0.0;doubletotSalario=0.0;doubleacrescimo=0.0;System.out.println("Qual o nome do Funcionário?");nome=sc.nextLine();//troque para nextLineSystem.out.println("Entre com valor do Salário");salario=Double.parseDouble(sc.nextLine());//faça assimif(salario<=150){acrescimo=salario*0.25;totSalario=salario+acrescimo;}System.out.println("Nome: "+nome);System.out.println("Salário: "+totSalario);}}
ou
publicclassSalarioFuncionario{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringnome="";doublesalario=0.0;doubletotSalario=0.0;doubleacrescimo=0.0;System.out.println("Qual o nome do Funcionário?");nome=sc.nextLine();//troque para nextLineSystem.out.println("Entre com valor do Salário");salario=sc.nextDouble();//ou assimif(salario<=150){acrescimo=salario*0.25;totSalario=salario+acrescimo;}System.out.println("Nome: "+nome);System.out.println("Salário: "+totSalario);}}
R
Ronimarcos
Putz, erro meu, desculpe.
Testei com o valor acima da condição.
Muito obrigado renamed.
Grande abraço.