0
我正在Netbeans中構建一個java項目。我得到了我的數據文件(temperature.txt),其中包含格式爲(低)|(高)的高和低溫。文件應該加載到二維數組中,然後將其打印到屏幕上。但是當我運行我的java項目時,我遇到了這個錯誤,並且完全丟失了。但我不知道如何解決這個問題。線程「main」中的異常java.lang.ArrayIndexOutOfBoundsException:1
Temperature.text:
+-------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| Day | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
+-------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| Temperature | 30|32 | 29|30 | 25|28 | 25|29 | 27|31 | 28|32 | 26|30 | 24|32 | 24|41 | 27|32 |
+-------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
輸出:
Analysis report of the temperature reading for the past 10 days
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Lab4Ex2.main(Lab4Ex2.java:48)
C:\Users\User\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
這裏是我的代碼:
import java.util.StringTokenizer;
import java.io.*;
public class Exercise {
public static void main(String[] args) {
StringTokenizer tokenizer;
String line;
String file="temperature.txt";
int[][] temp=new int[10][2];
int sumHigh, sumLow;
FileReader fr=null;
BufferedReader br=null;
try
{
fr=new FileReader(file);
br=new BufferedReader(fr);
line=br.readLine();
System.out.println("Analysis report of the temperature reading for the past 10 days " + line);
String [] content=line.split("|");
for(int row=0; row<=content.length; row++)
{
//I am trying to parse the two token into integer..
if(row != 0)
{
try
{
//Parse first token into integer and store in current row column 0
if(row % 2 != 0)
{
sumLow = Integer.parseInt(content[row]);
temp[row][0]=Integer.parseInt(content[row]); <---Line 48
}
//Parse second token into integer and store in current row column 0
else if (row % 2 == 0)
{
sumHigh = Integer.parseInt(content[row]);
temp[row][1]=Integer.parseInt(content[row]);
}
}
catch(NumberFormatException e)
{
System.out.println("The code throws an exception");
}
}
System.out.println();
}
br.close();
}
catch(FileNotFoundException e)
{
System.out.println("The file " + file + " was not found");
}
catch(IOException e)
{
System.out.println("Reading error");
}
catch(NumberFormatException e)
{
System.out.println("Parsing error");
}
finally
{
if(fr != null)
{
try
{
fr.close();
}
catch(IOException e)
{
System.out.println("Reading error");
}
}
}
}
}
哪條線是48? – bradimus
你應該知道'split()'使用* regex *。因此,'|'是一個特殊的字符,它告訴它尋找一個「這個或那個」的分隔符,在這種情況下是「無論什麼或沒有」。這不是你想要的。你應該用'\\ |'代替。但是除此之外,你的程序中有很多邏輯錯誤。 – RealSkeptic
'row <= content.length' ...應該不僅僅是小於嗎? 'row