TOPIC

Runtime Error

Rogério Sousa Ribeiro asked 3 years ago

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner;

public class AcimaMedia1214 { public static void main(String[] args) throws IOException { InputStreamReader ir = new InputStreamReader(System.in); BufferedReader ler = new BufferedReader(ir);

    int c = Integer.parseInt(ler.readLine());

    for (int i = 0; i < c; i++) {

        double cont = 0, cont2 = 0;
        double media = 0, media2 = 0, soma = 0;
        int alunos = Integer.parseInt(ler.readLine());
        double vetor[] = new double[alunos];

        for (int j = 0; j < alunos; j++) {

            vetor[j] = Double.parseDouble(ler.readLine());
            soma += vetor[j];
            cont++;             

        }
        media = (double)soma / cont;

        for (int j = 0; j < vetor.length; j++) {
            if(vetor[j] > media) {
                cont2++;
            }
        }
        if(cont2 > 0) {
            media2 = (double)(100 / cont)*cont2; 
        }
        System.out.printf("%.3f", media2);
        System.out.print("%");
        System.out.println();
    }

}

}

Estou recebendo Runtime Error, alguem pode me ajudar?

Remember not post solutions. Your post may be reviewed by our moderators.

  • pazuzu replied 3 years ago

    Você está usando o método readLine, e como o nome do método diz, ele lê uma linha inteira.

    Por exemplo:

    5
    5 50 50 70 80 100

    É tranquilo usar ele para o primeiro input, já que na primeira linha só possui um valor que pode ser convertido em Inteiro com o método parseInt, mas o mesmo não acontece na segunda linha.

    Ao chamar o método readLine na segunda linha, ele transforma toda a linha numa string, e ao chamar o método parseInt, ele lança uma excessão, já que não é uma string feita unicamente com dígitos (possui vários espaços em branco que obviamente são considerados).

    Nesse caso, a forma de capturar os valores é lê-los com o readLine e transformá-los num vetor de Strings com o método split(), e finalmente convertê-los quando necessário para inteiro com o Integer.parseInt.

    Por último, mas não menos importante, nas submissões utilizando a linguagem de programação JAVA, o nome da classe precisa ser Main.

    Tente sempre colocar seu código dentro das tags de código aqui do fórum para facilitar a visualização.