我正在尝试使用java获取文件的第一行,我不确定它为什么不工作或为什么我收到错误。这是我第一次在java中尝试过这个。
错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
at getSum.main(getSum.java:33)
代码
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.File;
import java.io.FileNotFoundException;
public class getSum {
public static void main(String[] args) {
File file = new File("path/InputArray.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
String line = null;
try{
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
while(dis.available() != 0){
line = dis.readLine();
}
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
String[] splitLine = line.split("\\s+");
int[] numbers = new int[splitLine.length];
for(int i = 0; i< line.length(); i++){
try{
numbers[i] = Integer.parseInt(splitLine[i]);
}catch(NumberFormatException nfe){};
}
int amount = 0;
System.out.print(numbers.length);
/*amount = sumArray(0,numbers.length,numbers.length,numbers);
System.out.print("Total: " + amount);*/
}
答案 0 :(得分:5)
看看这个:
int[] numbers = new int[splitLine.length];
for(int i = 0; i< line.length(); i++){
try{
numbers[i] = Integer.parseInt(splitLine[i]);
}catch(NumberFormatException nfe){};
}
您使用的i
从0到line.length()
...与splitLine.length
不同。我怀疑你的意思是:
for (int i = 0; i< splitLine.length; i++) {
此时,由于numbers
和splitLine
的长度相同,您绝对不会获得ArrayIndexOutOfBoundsException
。
答案 1 :(得分:0)
我认为你的for循环条件是错误的。我认为你应该检查splitLine.length()。
for(int i = 0; i< splitLine.length(); i++){
try{
numbers[i] = Integer.parseInt(splitLine[i]);
}catch(NumberFormatException nfe){};
}