遇到java直方图问题

时间:2015-11-01 21:03:26

标签: java

这就是问题:

设计并实现一个可以创建直方图的应用程序 目视检查一组值的频率分布。该计划应该读入 任意数量的整数,范围在1到100之间;然后产生一个 类似于下面的图表,表示有多少输入值落在1的范围内 到10,11到20,依此类推。为每个输入的值打印一个星号。

1 - 10 | *****
11 - 20 | **
21 - 30 | *******************
31 - 40 |
41 - 50 | ***
51 - 60 | ********
61 - 70 | **
71 - 80 | *****
81 - 90 | *******
91 - 100 | *********

源代码:

import java.io.*;
import java.util.Scanner;
public class histogram
{


    public static void main(java.lang.String[] args)
    throws IOException
    {
        Scanner scan = new Scanner (System.in);
        final int min = 1;
        final int max = 10;
        final int limit = 10;
        int[] a = new int[max];

        for (int b = 0; b < a.length; b++)
        {
            a[b] = 0;
        }

        System.out.println("Enter Number between 1 and 100: \n (Or press 0 to stop)");
        int number = scan.nextInt();

        while (number >= min && number <= (limit*max) && number != 0)
        {
            a[(number-1)/limit] = a[(number - 1 ) / limit] + 1;
            System.out.print("Please enter a value:");
            number = scan.nextInt();
        }

        System.out.println("\n__Histogram__");
        for (int y = 0; y < a.length; y++)
        {
            System.out.print("   " + (y * limit + 1) + " - " + (y + 1) * limit + "\t");
            return;
        }


        for (int z = 0; z < a[b]; z++)
        {
            System.out.print("*");
        }
        System.out.println(0);
    }
}

在最后一个声明中,它表示b无法解析为变量。当我使用java求助时,它将b设置为0并且程序无法正常运行。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于b是早期循环中的数组索引,我认为您需要将最后一个循环放在循环中,以便像开头一样增加数组索引。

将b更改为y并将y移动到y中以进行循环。

for (int y = 0; y < a.length; y++)
{
    System.out.print("   " + (y * limit + 1) + " - " + (y + 1) * limit + "\t");
    for (int z = 0; z < a[y]; z++)
    {
        System.out.print("*");
    }
    System.out.println();
}