这就是问题:
设计并实现一个可以创建直方图的应用程序 目视检查一组值的频率分布。该计划应该读入 任意数量的整数,范围在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并且程序无法正常运行。有什么想法吗?
答案 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();
}