我们被要求创建一个具有给定值的简单直方图,但我的代码似乎不起作用。我真的需要帮助。 编辑:运行时出现此错误:
(线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:5` 在Exercise39_Histogram.main(Exercise39_Histogram.java:13) 流程已完成)
代码:
public class Exercise39_Histogram
{
public static void main(String args[])
{
int el[]= new int[]{0, 1, 2, 3, 4, 5};
int val[] = new int[]{10, 3, 6, 18, 11, 1};
String ast[] = new String[5];
ast[0] = "**********";
ast[1] = "***";
ast[2] = "******";
ast[3] = "******************";
ast[4] = "***********";
ast[5] = "*";
System.out.println("Elements\tValue\tHistogram");
System.out.print(el[0]+"\t"+val[0]+"\t"+ast[0]);
System.out.print(el[1]+"\t"+val[1]+"\t"+ast[1]);
System.out.print(el[2]+"\t"+val[2]+"\t"+ast[2]);
System.out.print(el[3]+"\t"+val[3]+"\t"+ast[3]);
System.out.print(el[4]+"\t"+val[4]+"\t"+ast[4]);
System.out.print(el[5]+"\t"+val[5]+"\t"+ast[5]);
}
}
答案 0 :(得分:3)
创建阵列时,将其大小设置为5,
String ast[] = new String[5];
但后者使用时
ast[5] = "*";
你试图保存索引为6的数据,因为数组索引从0开始。你应该将数组的大小改为6。
要获得正确的显示,您可能希望使用:
System.out.println
显示所有直方图,否则它们将全部显示在同一行中。
答案 1 :(得分:0)
运行时出现此错误:(线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:5在Exercise39_Histogram.main(Exercise39_Histogram.java:13)处理完成)
你得到这个例外,因为ast [5]不存在。
请记住,数组的索引从0开始,而不是1。
通过String ast[] = new String[5];
,你创建了一个 size 5 的数组,这意味着你只有 5个元素的空间< / EM> 强>:
ast[0]
ast[1]
ast[2]
ast[3]
ast[4]
第13行 中的代码ast[5] = "*";
正在尝试访问不存在的第6个元素,从而为您提供ArrayIndexOutOfBounsException
。< / p>
至于你的打印输出,你可能想要使用循环:
System.out.println("Elements\tValue\tHistogram");
for(int x=0; x<6; x++)
System.out.println(el[x]+"\t"+val[x]+"\t"+ast[x]);