Programa de histograma em Java

Yashaswi Kothari 12 outubro 2023
Programa de histograma em Java

Os histogramas nos permitem manter a contagem de diferentes categorias de valores. Também podemos representá-los graficamente.

Neste artigo, usaremos Java para criar um histograma que armazenará a soma dos dados lançados.

Para verificar os valores, usaremos a escada if-else. A escada if-else é uma forma eficiente de comparar um elemento com vários valores. Mantemos a contagem de cada soma em diferentes variáveis ​​inteiras. Cada variável é incrementada quando a correspondência ocorre.

Pedimos ao usuário a entrada do tamanho do array do histograma. Esta matriz representará o número total de vezes que cada dado será lançado. Em seguida, inicializaremos os números que ocorrerão como a soma de duas matrizes lançadas simultaneamente, começando de 2 a 12.

O usuário insere o valor de ambos os dados e nós calcularemos sua soma. A escada if-else irá comparar a soma com diferentes possibilidades e incrementar cada vez que ocorrer uma correspondência.

Vamos implementar tudo isso no programa a seguir.

import java.io.*;
class Main {
  public static String toStars(int number) {
    StringBuilder temp = new StringBuilder();
    for (int i = 0; i < number; i++) {
      temp.append("*");
    }
    return temp.toString();
  }
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.print("Total rolls for each dice?");

    int n = Integer.parseInt(br.readLine());
    int[] rolls = new int[n];
    int d1;
    int d2;
    int two = 0;
    int three = 0;
    int four = 0;
    int five = 0;
    int six = 0;
    int seven = 0;
    int eight = 0;
    int nine = 0;
    int ten = 0;
    int eleven = 0;
    int twelve = 0;

    for (int roll = 0; roll < rolls.length; roll++) {
      System.out.println("First dice roll");
      d1 = Integer.parseInt(br.readLine());
      System.out.println("Second dice roll");
      d2 = Integer.parseInt(br.readLine());
      System.out.println(" The first dice rolled a " + d1 + " the second dice rolled a " + d2);

      int sum;
      sum = d1 + d2;

      if (sum == 2)
        two++;
      if (sum == 3)
        three++;
      if (sum == 4)
        four++;
      if (sum == 5)
        five++;
      if (sum == 6)
        six++;
      if (sum == 7)
        seven++;
      if (sum == 8)
        eight++;
      if (sum == 9)
        nine++;
      if (sum == 10)
        ten++;
      if (sum == 11)
        eleven++;
      if (sum == 12)
        twelve++;
    }
    System.out.println("Histogram of rolls:");
    System.out.println("2 occurred " + toStars(two) + " times");
    System.out.println("3 occurred " + toStars(three) + " times");
    System.out.println("4 occurred " + toStars(four) + " times");
    System.out.println("5 occurred " + toStars(five) + " times");
    System.out.println("6 occurred " + toStars(six) + " times");
    System.out.println("7 occurred " + toStars(seven) + " times");
    System.out.println("8 occurred " + toStars(eight) + " times");
    System.out.println("9 occurred " + toStars(nine) + " times");
    System.out.println("10 occurred " + toStars(ten) + " times");
    System.out.println("11 occurred " + toStars(eleven) + " times");
    System.out.println("12 occurred " + toStars(twelve) + " times");
  }
}

Resultado:

Total rolls for each dice?5

First dice roll

1

Second dice roll

2

 The first dice rolled a 1 the second dice rolled a 2

First dice roll

2

Second dice roll

1

 The first dice rolled a 2 the second dice rolled a 1

First dice roll

5

Second dice roll

4

 The first dice rolled a 5 the second dice rolled a 4

First dice roll

1

Second dice roll

1

 The first dice rolled a 1 the second dice rolled a 1

First dice roll

3

Second dice roll

1

 The first dice rolled a 3 the second dice rolled a 1

Histogram of rolls:

2 occurred * times

3 occurred ** times

4 occurred * times

5 occurred  times

6 occurred  times

7 occurred  times

8 occurred  times

9 occurred * times

10 occurred  times

11 occurred  times

12 occurred  times

Observe que para exibir a saída final, criamos uma função separada toStars() que converte a frequência de cada possibilidade no número de estrelas. Este método é visualmente atraente e oferece uma boa representação de um histograma.