使用数组创建具有给定值的直方图帮助pls :(

时间:2016-02-02 14:54:23

标签: java arrays

我们被要求创建一个具有给定值的简单直方图,但我的代码似乎不起作用。我真的需要帮助。 编辑:运行时出现此错误:

  

(线程中的异常" 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]);

            }   
    }

2 个答案:

答案 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]);