gpt4 book ai didi

java - 我的逻辑不适用于计算直方图

转载 作者:行者123 更新时间:2023-12-01 23:39:59 25 4
gpt4 key购买 nike

编写程序Example.java来计算数据,以构造从文件读取的整数值的直方图。直方图是一种条形图,其中每个条形的长度给出了落入特定值范围(通常称为箱)的项目数。您实际上不会绘制条形图,而是打印出每个 bin 的大小。

您的程序应采用四个命令行参数:

  1. 包含 array 的文件名的integers
  2. 整数 b给出 bins 的数量进行排序。
  3. 整数 min给出最小的最小数 bin .
  4. 整数 s给出每个 bin 中的大小(不同整数的数量) 。您可以假设(无需检查)b > 0 and s > 0 .

将感兴趣的值范围划分为 b 个大小为 s 的容器。计算文件中落入每个 bin 的值的数量。还要计算完全低于或高于范围的值的数量。

例如,给定此测试文件 data1:"05X/data1"

    1 15
2 18 11 -101 51 92 53 45 55 52 53 54 55 56 5 -2

java Example data1 10 -10 7的输出应该是

    x < -10: 1
-10 <= x < -3: 0
-3 <= x < 4: 1
4 <= x < 11: 1
11 <= x < 18: 1
18 <= x < 25: 1
25 <= x < 32: 0
32 <= x < 39: 0
39 <= x < 46: 1
46 <= x < 53: 2
53 <= x < 60: 6
x >= 60: 1

下面的代码能够打印出输出的第一行。 for 循环打印出范围 min <= x < max : bin 不断出现异常

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at Example.main(Example.java:49)

这里有什么语法错误?请帮忙

    class Example {
public static void main (String argv[]) throws IOException {
if (argv.length != 4)
usage ();
int[] is = {0};
int b = 0;
int min = 0;
int s = 0;
try {
is = readIntArray(argv[0]);
b = Integer.parseInt (argv[1]);
min = Integer.parseInt (argv[2]);
s = Integer.parseInt(argv[3]);
} catch (NumberFormatException e) {
usage();
}

int max = b * s + min;
int [] count = {0};
for (int i = 0; i < is.length; i++)
if (is[i] < min){
count[0]++;
} else if (i >= max) {
count[b+1]++;
} else {
int n = min;
int index = 0;
while (i < n + s){
n += s;
index++;
count[i]++;
}
}
System.out.println("x < " + min + ": " + count[0]);
for (int i = 1; i <= b; i++){
int low = s * i + min;
int high = s * (i + 1) + min;
System.out.println(low + " <= x < " + high + ": " + count[i]);
}
System.out.println("x >= " + max + ": " + count[b + 1]);
}

最佳答案

您的 count 数组的长度为 1:int [] count = {0}; 但您正在尝试访问更高的索引:

if (is[i] < min){
count[0]++;
} else if (i >= max) {
count[b+1]++; //here
} else {
int n = min;
int index = 0;
while (i < n + s){
n += s;
index++;
count[i]++; // and here
}
}

由于数组中不存在 0 以外的索引,因此它们超出范围,因此您会收到异常。

关于java - 我的逻辑不适用于计算直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58264328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com