Problemas com ponto flutuante

4 respostas
java
W

Em primeiro lugar, imposto é roubo.
Em segundo lugar, galera, tô quebrando minha cabeça num código mais simples que a pqp.
Segue ele (só pus o psvm):

Scanner in = new Scanner(System.in);
        
        System.out.print("Insira quantas provas você fez: ");
        short[] provas = new short[(in.nextShort() - 1)];
        float soma = 0.0f;
        System.out.println();
        for(int i = 0; i <= provas.length; i++){
            System.out.print("Insira a nota da " + (i + 1) + "º prova: ");
            soma = in.nextFloat();
        }
        System.out.format("A média aritmética das provas é: %.1f\n", (soma/provas.length));

Mesmo eu declarando a variável como ponto flutuante, acaba dando merda quando eu digito algum valor com vírgula/ponto no looping. Por quê?

4 Respostas

P

Mas é claro que nao funcionaria do jeito que vc quer…

soma = in.nextFloat();

eu ACHO que vc quis dizer

soma += in.nextFloat();

agora PODE ser que dê uma RUIM fazer divisao de float com short… testa ai

W
É, a intenção era usar o composto HUAEHUAUH

Arrumei, por mais que eu não veja esse como sendo o motivo do erro, e continuou dando o erro. Ele acontece antes mesmo da divisão (esqueci de converter, vim duma linguagem sem essa incompatibilidade de tipos). Olha o erro:

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 calcularmedia.CalcularMedia.main(CalcularMedia.java:23)
C

“nextFloat” é sensível ao padrão de entrada, por exemplo: caso o locale esteja como US ele somente irá reconhecer números no formato americano: “10,253.2525f” (vírgula como separador de milhar e ponto como separador decimal)

W

Aaaaaa, era isso mesmo, muito obrigado!

Criado 20 de setembro de 2016
Ultima resposta 20 de set. de 2016
Respostas 4
Participantes 3