Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向数组和switch语句添加元素时出现问题,错误为ArrayIndexOutOfBoundsException_Java_Arrays_Switch Statement - Fatal编程技术网

Java 向数组和switch语句添加元素时出现问题,错误为ArrayIndexOutOfBoundsException

Java 向数组和switch语句添加元素时出现问题,错误为ArrayIndexOutOfBoundsException,java,arrays,switch-statement,Java,Arrays,Switch Statement,下面是我正在编写的一个程序的开始,该程序从weather.txt读取温度信息,该程序以以下格式列出日期和温度数据:01/01/1941 38 25,分别表示日期、最低温度和最高温度。weather.txt中的第一个条目是数据条目的总数,接下来的3行用于格式化: import java.io.*; import java.util.*; public class WeatherAnalysis { public static void main(String[] args) throws Fil

下面是我正在编写的一个程序的开始,该程序从weather.txt读取温度信息,该程序以以下格式列出日期和温度数据:
01/01/1941 38 25
,分别表示日期、最低温度和最高温度。weather.txt中的第一个条目是数据条目的总数,接下来的3行用于格式化:

import java.io.*;
import java.util.*;

public class WeatherAnalysis {
public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("weather.txt"));
    input.useDelimiter("[/ \t\n\r]+");

    int tempCount = input.nextInt();
    int[] month = {tempCount};
    int[] day = {tempCount};
    int[] year = {tempCount};
    int[] tmax = {tempCount};
    int[] tmin = {tempCount};

    System.out.println("There are " + tempCount + " entries.");
    for (int i = 0; i < 3; i++) {
        input.nextLine();
    }
    int count = 0;
    for (int i = 0; i <= tempCount; i++) {
        if (count < 5) {
            switch(count) {
            case 0:
                month[i]=input.nextInt();
                break;
            case 1:
                day[i]=input.nextInt();
                break;
            case 2:
                year[i]=input.nextInt();
                break;
            case 3:
                tmax[i]=input.nextInt();
                break;
            case 4:
                tmin[i]=input.nextInt();
                break;
            }  
            count++;
        }
        else {
            count = 0;
        }


    }
}
}
import java.io.*;
导入java.util.*;
公共类天气分析{
公共静态void main(字符串[]args)引发FileNotFoundException{
扫描仪输入=新扫描仪(新文件(“weather.txt”);
input.useDelimiter(“[/\t\n\r]+”);
int tempCount=input.nextInt();
int[]月={tempCount};
int[]天={tempCount};
int[]年={tempCount};
int[]tmax={tempCount};
int[]tmin={tempCount};
System.out.println(“有“+tempCount+”个条目”);
对于(int i=0;i<3;i++){
input.nextLine();
}
整数计数=0;

对于(int i=0;i你不能这样做
i你不能这样做
i当你这样做时:

int[] month = {tempCount};
这将仅创建一个元素的
数组
tempCount
。您需要:

int[] month = new int[tempCount];
这将创建一个大小为
tempCount


还要注意,此循环:

for (int i = 0; i < 3; i++) {
    input.nextLine();
}
for(int i=0;i<3;i++){
input.nextLine();
}
正在调用
nextLine()
,但未将其解析为任何内容

我相信元素最初被设置为0,所以我的想法是数组可能会以0,0,0,46,0,0,0,42等形式结束

是的,这将是正确的,因为您总是将其设置为
i
,当您添加到任何
数组中时,该值都会增加。我建议使用
列表
,这样您就可以简单地使用
添加()
方法,并将其添加到
列表的末尾。
也没有固定的大小,因此您不必事先声明大小。

当您这样做时:

int[] month = {tempCount};
这将仅创建一个元素的
数组
tempCount
。您需要:

int[] month = new int[tempCount];
这将创建一个大小为
tempCount


还要注意,此循环:

for (int i = 0; i < 3; i++) {
    input.nextLine();
}
for(int i=0;i<3;i++){
input.nextLine();
}
正在调用
nextLine()
,但未将其解析为任何内容

我相信元素最初被设置为0,所以我的想法是数组可能会以0,0,0,46,0,0,0,42等形式结束


是的,这将是正确的,因为您总是将其设置为
i
,当您添加到任何
数组中时,该值都会增加。我建议使用
列表
,这样您就可以简单地使用
添加()
方法,并将其添加到
列表的末尾。
也没有固定的大小,因此您不必事先声明大小。

哇,这是一个多么愚蠢的错误!谢谢!文本文件中的第一个整数是数据条目的数量(因此是tempCount),以下3行纯粹用于文本文档的格式设置。我的目的是让循环跳过这些行,以便它从以数据开头的那一行开始。这不正确吗?@SamPhinney不,这不正确,我只是想你可能是无意中跳过了重要数据。哇,这是一个多么愚蠢的错误!谢谢您!文本文件中的第一个整数是数据项的数量(因此为tempCount),以下3行纯粹用于文本文档的格式设置。我的目的是让循环跳过这些行,以便从以数据开头的行开始。这不正确吗?@SamPhinney不,这不正确,我只是想你可能是无意中跳过了重要数据。