Java ArrayIndexOutofBounds异常:4

Java ArrayIndexOutofBounds异常:4,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我正在写一个小程序来分析我的一些数据,这段代码昨天已经运行了,现在已经不工作了。 为了我的生命,我不知道为什么。在我看来,一切都是应该的。我尝试将计算机上的文件夹与我的重新同步,但仍然收到相同的错误。也许第二双眼睛可以帮我 可以找到正在读取的文本文件 以下是堆栈跟踪引用的方法: public static void main(String[] args) throws IOException{ FileManagementMethods fmm = new FileManagementM

我正在写一个小程序来分析我的一些数据,这段代码昨天已经运行了,现在已经不工作了。 为了我的生命,我不知道为什么。在我看来,一切都是应该的。我尝试将计算机上的文件夹与我的重新同步,但仍然收到相同的错误。也许第二双眼睛可以帮我

可以找到正在读取的文本文件

以下是堆栈跟踪引用的方法:

public static void main(String[] args) throws IOException{
    FileManagementMethods fmm = new FileManagementMethods();
    fmm.runProgram();

}

这是堆栈跟踪:

public static void main(String[] args) throws IOException{
    FileManagementMethods fmm = new FileManagementMethods();
    fmm.runProgram();

}

如果你们需要更多信息,请毫不犹豫地询问。

问题就在这里,在您的
getHumiditiesFromFile
方法中:

while(1 < numLines){
最好确保该数组中至少有4个项目


除此之外,上面一节中提到的错误(假设它不是打字错误)也可能因处于无限循环中而引发此异常。

您在此处硬编码了
4
,但没有检查它是否存在:

String tempString = lineDivides[4]; 

您需要事先进行一些数据验证。假设您所读的行至少有三个逗号。要么更改代码以进行检查,要么验证文件。

因此,这是一个愚蠢的问题。。。。JSoup有几个坏连接,没有保存我需要保存的一些数据。因此,它无法识别某些数据行。
一旦我修复了实际数据,它将再次正常运行。

很抱歉浪费了您的时间。

很可能在这里[4]@FooBarUser注意,由于我们不知道WeatherAnalysisMethods中哪一行是51号,我们无法确定。另外,请注意,OP在
中有
来自文件[i]
的湿度,而
中有
的湿度。是的,这是一个更好的答案,实际上他应该提到第51行的位置。正确的行由Foo Bar用户列出。我很抱歉没有列出这一点。单击此处查看包含正在读取的数据的文件即使在将代码更改为Luiggi建议的代码之后,我仍然可以在堆栈跟踪中获得确切的内容。“1”有一个输入错误。请更新您的答案,说明哪一行是WeatherAnalysisMethods。java:51I在上面用指向保存读取数据的pastebin页面的链接进行了评论。@NickMedovich哈哈,我不会为您验证一百行数据。对不起。:)
String tempString = lineDivides[4];
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at org.weatheralert.analysis.WeatherAnalysisMethods.getHumiditiesFromFile(WeatherAnalysisMethods.java:51)
at org.weatheralert.analysis.WeatherAnalysisMethods.parseFileAverageHumidity(WeatherAnalysisMethods.java:22)
at org.weatheralert.analysis.FileManagementMethods.runProgram(FileManagementMethods.java:22)
at org.weatheralert.analysis.Main.main(Main.java:9)
while(1 < numLines){
while (i < numLines){
String tempString = lineDivides[4];
String tempString = lineDivides[4];