6

我刚刚开始在 Arrays 中创建一个单元,并为我提供了一些示例代码来查看这个非常基本的 Arrays 介绍性程序。基本上我所要做的就是制作两个数组来询问一周中那一天的温度。收集信息后,它会简单地以这样的字符串将其吐回。

周一气温16度

周二气温18度

... ETC。

根据我从收到的示例代码中了解到的情况,我所做的一切都是正确的。但是当尝试运行程序(在 Netbeans 中)时,我得到了这个错误。

“线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:温度为 7.Temperatures.main(Temperatures.java:27) Java 结果:1”

这是代码:

public static void main(String[] args)throws IOException {
        // TODO code application logic here
        BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
        String temp[]= new String[7];
        String day[]= new String[7];
        day[1]=("Monday");
        day[2]=("Tuesday");
        day[3]=("Wednesday");
        day[4]=("Thursday");
        day[5]=("Friday");
        day[6]=("Saturday");
        day[7]=("Sunday");
        for (int i=0; i <7; i++){
            System.out.println("Please enter the temperature for" + day[i]);
            temp[i]=br.readLine();
        }
        for (int i=0; i <7; i++){
        System.out.println("The high temperature on " + day[i]+ " was "+ temp[i]);
        }
    }
}
4

5 回答 5

6

数组从零开始(<- 这是解释原因的文章的链接)。因此,将您的第一个值作为day[1]=("Monday");问题分配,应该是day[0]=("Monday");希望有帮助

于 2012-05-17T18:01:34.373 回答
4

Java 中的数组从位置 0 开始,而不是位置 1。因此,如果将其初始化为 7 的大小,则星期一为 0,星期日为 6。没有可用的索引 7。

于 2012-05-17T18:01:19.017 回答
1

数组从 0 开始,

试试这个

    day[0]=("Monday");
    day[1]=("Tuesday");
    day[2]=("Wednesday");
    day[3]=("Thursday");
    day[4]=("Friday");
    day[5]=("Saturday");
    day[6]=("Sunday");

你应该改变这个循环

for(int i=0; i < 7; i++){
        System.out.println("Please enter the temperature for" + day[i]);
        temp[i]=br.readLine();
    }

为了这

for(int i=0; i < day.length(); i++){
        System.out.println("Please enter the temperature for" + day[i]);
        temp[i]=br.readLine();
    }

我希望能帮助你。

于 2012-05-17T18:04:18.860 回答
0

那是因为您的数组从 1 开始,从 7 结束。如果您的数组长度为 7,则最后一个索引应该比数组长度小 1。在您的情况下,数组看到您已为 7 个元素声明它,但插入了 8 个位置。所以,数组从 0 开始,从 6 结束

于 2012-05-17T18:06:21.617 回答
0

如果数组是“N”,则该数组的边界是 0 和“N-1”。在您的情况下,数组边界是 0 和 6。但是您正在尝试将值写入不存在的数组 [7]。

于 2012-06-20T12:15:57.587 回答