Java数组索引超出范围

Java数组索引超出范围,java,arrays,Java,Arrays,我刚开始在数组中创建一个单元,有人给了我一些示例代码,让我看看这个非常基本的数组入门程序。基本上,我所要做的就是制作两个数组,询问一周中某一天的温度。收集完信息后,它会像这样简单地将信息以字符串形式吐出 星期一的气温是16度 周二的气温是18度 。。。等等 从我收到的示例代码中了解到,我做的每件事都是正确的。但是当我尝试运行这个程序(在Netbeans中)时,我得到了这个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:7 在temp

我刚开始在数组中创建一个单元,有人给了我一些示例代码,让我看看这个非常基本的数组入门程序。基本上,我所要做的就是制作两个数组,询问一周中某一天的温度。收集完信息后,它会像这样简单地将信息以字符串形式吐出

星期一的气温是16度

周二的气温是18度

。。。等等

从我收到的示例代码中了解到,我做的每件事都是正确的。但是当我尝试运行这个程序(在Netbeans中)时,我得到了这个错误

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:7 在temperatures.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]);
        }
    }
}
publicstaticvoidmain(字符串[]args)引发IOException{
//此处的TODO代码应用程序逻辑
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
字符串温度[]=新字符串[7];
字符串日期[]=新字符串[7];
第[1]天=(“星期一”);
第[2]天=(“星期二”);
第[3]天=(“星期三”);
第[4]天=(“星期四”);
第[5]天=(“星期五”);
第[6]天=(“星期六”);
第[7]天=(“星期日”);

对于Java中的(int i=0;i数组,从位置0开始,而不是位置1。因此,如果将其初始化为7,星期一为0,星期日为6。没有可用的索引7。

(数组的起始位置为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<7;i++){
System.out.println(“请输入“+天[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();
    }
for(int i=0;i

希望对您有所帮助。

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

如果数组为“N”,则t的边界hat数组为0和“N-1”。
在您的例子中,数组边界是0和6。但是您正在尝试将值写入数组[7]这是不存在的。

注意,这被标记为家庭作业。我们不想给某人明确的答案,只需给他们指出正确的方向。啊,好吧,我感觉这可能是一个小的逻辑错误。我重新运行了程序,替换了数组号,它成功了。谢谢!欢迎使用堆栈溢出:)我很高兴你找到了答案!请接受你认为以最佳方式回答问题的答案(单击投票箭头下方的小复选标记),这样将来有类似问题的人就会知道是什么解决了你的问题。