0
我有一个.data文件包含值的行。我使用split
方法将它们分成不同的值,然后初始化一个ArrayList
,我将模型项添加到列表中。我对这里这个特定的代码,而环路是这样的:简单的ArrayIndexOutOfBoundsException循环中的1
while (inFile.hasNextLine() {
// Do something
}
似乎并没有工作,所以我把它切换到for
循环。
public MachineLearningInstance(File f) {
try {
int noOfRowsInData = 0;
LineNumberReader lnr = new LineNumberReader(new FileReader(f));
try {
lnr.skip(Long.MAX_VALUE);
noOfRowsInData = lnr.getLineNumber();
//System.out.println(noOfRowsInData);
lnr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
irisData = new ArrayList<Iris>();
// While there is another line in inFile.
Scanner inFile = new Scanner(f);
for (int i = 0; i < noOfRowsInData; i++) {
if (inFile.hasNextLine()) {
// Store line into String
String line = inFile.nextLine();
// Partition values into separate elements in array
String[] numbers = line.split(comma);
// Grab values from that line and store it into a Iris ArrayList Item
irisData.add(i, new Iris(i, numbers[0], numbers[1], numbers[2], numbers[3], numbers[4]));
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
出于某种奇怪的原因(我敢打赌,这是一个很简单的原因,我看不出它)我不断收到ArrayListIndexOutOfBoundsException 1
当我运行这段代码。我猜我的while循环不断循环?我不明白这个问题似乎是什么。
是否有可能我的LineNumberReader
没有正确读取行数?尽管如此,我认为情况并非如此。我很可能没有正确地声明一些东西。