Olá pessoal.
Desculpem a minha ignorância em mas estou com um problema básico
em JAVA e não achei solução ainda.
Meu código é:
package basico;
import java.util.Scanner;
public class fundamento{
public static void main(String[] args){
float numero;
System.out.println("Digite um numero: ");
Scanner sc = new Scanner(System.in);
numero = sc.nextFloat();
System.out.println(" -> " + numero);
E a saída do programa é:
Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextFloat(Scanner.java:2345)
at basico.fundamento.main(fundamento.java:10)
C:\Users\user\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)
public class fundamento {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
float numero;
System.out.println("Digite um numero: ");
numero = sc.nextFloat();
System.out.println(" -> " + numero);
}
}
Esqueceste de fechar as chaves tanto da classe quanto do metodo. E tente declarar classes como Streams, Buffers, ArrayList e etc tudo antes de inputs.
Uma dica para o futuro, tente entender o que diz as mensagens de erro, no caso do Java, elas são bem claras, veja:
java.util.InputMismatchException
quer dizer que o tipo de dado que o programa espera ler não é o mesmo tipo de dado que foi digitado pelo usuário. No seu caso, como você está esperando um float, é muito comum ocorrer erro de formatação por conta de configuração regional. Se você está digitando número decimal com vírgula, por exemplo, 10,25, tente trocar por 10.25 e vice-versa.
float numero;
System.out.println("Digite um numero: ");
Scanner sc = new Scanner(System.in);
numero = Float.parseFloat(sc.nextLine());
System.out.println(" -> " + numero);
Vejo muita gente aqui no fórum com problemas ao utilizar a classe Scanner. Minha dica pra usar essa abençoada é sempre pegar o valor da linha com o nextLine() (retorna uma String) e converter o valor pro tipo desejado. Quando se usa next(), nextFloat(), etc, o último caractere (\n) da linha dá problema. Isso justifica a exceção java.util.InputMismatchException, pois o esperado era um número 888.8 e veio um 888.8\n.
Se vc usa o nextLine() pra pegar o valor, esse \n é devidamente “tratado”. A solução que sugeri foi pegar o valor como uma string “tratada” e fazer um parse dela pro tipo Float.
public class fundamento {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
float numero;
System.out.println("Digite um numero: ");
numero = Float.parse(sc.nextLine());
System.out.println(" -> " + numero);
}
}
Eu também sou iniciante em Java. Estou começando a praticar fazendo exercícios. Eu fiz dezoito exercícios e estou voltando a fazer novamente os exercícios aplicando a segunda versão, ou seja, de forma diferente da primeira versão.
Olhando o código embaixo. Eu tenho uma dúvida:
1 - Eu estou querendo que o usuário possa digitar a nota com ponto. Exemplo: 8.5. No meu código, ele funciona só com vírgula (8,5). Na saída só aparece o número com ponto. Exemplo: 8.78032
package com.loiane.cursojava.aula13.labs;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Exer04 {
private static Scanner sc;
public static void main(String[] args) {
System.out.printf("Informe a nota do primeiro bimestre.");
double bimestral1 = sc.nextDouble();
DecimalFormat b1 = new DecimalFormat("#.##");
b1.format(bimestral1);
System.out.printf("Informe a nota do segundo bimestre.");
double bimestral2 = sc.nextDouble();
DecimalFormat b2 = new DecimalFormat("#.##");
b2.format(bimestral2);
System.out.printf("Informe a nota do terceiro bimestre.");
double bimestral3 = sc.nextDouble();
DecimalFormat b3 = new DecimalFormat("#.##");
b3.format(bimestral3);
System.out.printf("Informe a nota do quarto bimestre.");
double bimestral4 = sc.nextDouble();
DecimalFormat b4 = new DecimalFormat("#.##.");
b4.format(bimestral4);
int peso1 = 1;
int peso2 = 2;
int peso3 = 3;
int peso4 = 4;
double bimestral = (bimestral1 * peso1) + (bimestral2 * peso2) + (bimestral3 * peso3) + (bimestral4 * peso4);
double anual = bimestral / 10;
System.out.println("A média anual do aluno é: " + anual);
}
Pegue a String da nota com o scanner e use o o método replace antes de converter para float ou double.
Exemplo: (por convenção usa-se “sout” para System.out)
sout.println("Informe a nota do XXXX bimestre: ");
String nota = scanner.nextLine();
nota = nota.replace('.', ',');
float notaFloat = Float.parseFloat(nota);