[RESOLVIDO]Problema com numeros quebrados

4 respostas Resolvido
Emett

Boa tarde,
Estou com problema na hora de fazer a leitura de números quebrados, sejam eles com “,” ou “.”(Ex: 10,4 ou 10.4) simplesmente retorna o erro

Exception in thread main java.util.InputMismatchException

at java.base/java.util.Scanner.throwFor(Scanner.java:939)

at java.base/java.util.Scanner.next(Scanner.java:1594)

at java.base/java.util.Scanner.nextInt(Scanner.java:2258)

at java.base/java.util.Scanner.nextInt(Scanner.java:2212)

Já usei Locale.setDefault(Locale.US); pra ver se resolvia porém o erro persiste. Alguém saberia me dizer como resolver? Só consigo inserir apenas números inteiros.

Segue cód que apresenta o erro(porém o erro persiste em qualquer código que eu faça):

public class Exec4 {

public void exec4() {
	Locale.setDefault(Locale.US);
	Scanner sc = new Scanner(System.in);

	int numero, horas;
	double valorHora, salario;

	numero = sc.nextInt();
	horas = sc.nextInt();
	valorHora = sc.nextDouble();

	salario = valorHora * horas;

	System.out.println("NUMBER = " + numero);
	System.out.printf("SALARY = U$ %.2f%n", salario);

	sc.close();

}

}

4 Respostas

Emett

Ps.: Tanto no NetBeans como no Eclipse ocorre

H
Solucao aceita

os 2 primeiros números são inteiros, só o Terceiro que você vai conseguir digitar com 10.4.

F

As suas variareis numero e horas são do tipo int e você está tentando atribuir valores de pontos flutuantes a essas variáveis se você fizer isso ocasionará o erro abaixo:

Exception in thread main java.util.InputMismatchException

at java.base/java.util.Scanner.throwFor(Scanner.java:939)

at java.base/java.util.Scanner.next(Scanner.java:1594)

at java.base/java.util.Scanner.nextInt(Scanner.java:2258)

at java.base/java.util.Scanner.nextInt(Scanner.java:2212)

Se você quiser atribuir um valor com ponto flutuante (double ou float) a uma variável do tipo int, você terá que realizar um casting (Conversão explícita de um tipo para outro.), neste caso a parte fracionada do número será perdida.

Exemplo:

double t = 10.2;

int x = (int) t;

System.out.println(x); // Resultado = 10

Solução:

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Locale.setDefault(Locale.US);
	Scanner sc = new Scanner(System.in);

	double numero, horas;
	double valorHora, salario;

	numero = sc.nextDouble();
            horas = sc.nextDouble();

	valorHora = sc.nextDouble();

	salario = valorHora * horas;

	System.out.println("NUMBER = " + numero);
	System.out.printf("SALARY = U$ %.2f%n", salario);

	sc.close();
}
K

Estou tendo o mesmo problema e a solução não resolveu, estou tentando atribuir valor com ponto flutuante apenas na variável valorHora que está em double, só que no final da este erro.

Exception in thread main java.util.UnknownFormatConversionException: Conversion = 2

at java.base/java.util.Formatter.checkText(Formatter.java:2732)

at java.base/java.util.Formatter.parse(Formatter.java:2708)

at java.base/java.util.Formatter.format(Formatter.java:2655)

at java.base/java.io.PrintStream.format(PrintStream.java:1053)

at java.base/java.io.PrintStream.printf(PrintStream.java:949)

at

o Código é este package NovosExerciciosAParte;

import java.util.Locale;
import java.util.Scanner;

public class ExerciciosDoMaterialDeApoioMatematica4 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Locale.setDefault(Locale.US);
	Scanner sc = new Scanner(System.in);

	int numero, horas;
	double valorHora, salario;
	numero = sc.nextInt();
	horas = sc.nextInt();
	valorHora = sc.nextDouble();
	salario = valorHora * horas;

	System.out.println("NUMBER = " + numero);
	System.out.printf("SALARY = U$ %2.f%n", salario);

	sc.close();
}

}

Estou inserindo os números 25, 100, 5.50 no scanner e da erro mesmo o terceiro sendo double.

Criado 27 de abril de 2020
Ultima resposta 25 de jul. de 2020
Respostas 4
Participantes 4