我使用此方法获取Spotify zipfsong拼图的输入:https://www.spotify.com/us/jobs/tech/zipfsong/
public static ArrayList<ArrayList<String>> fileReader() throws IOException {
Scanner scanner = new Scanner(System.in);
ArrayList<ArrayList<String>> fileContents = new ArrayList<ArrayList<String>>();
try{
String currentLine = scanner.nextLine();
ArrayList<String> fileRow = new ArrayList(Arrays.asList(currentLine.split(" ")));
fileContents.add(fileRow);
int numberOfInputLines = Integer.parseInt(fileRow.get(0));
int numberOfOutputLines = Integer.parseInt(fileRow.get(1));
if (numberOfInputLines < numberOfOutputLines) {
return null;
}
for (int lineCount = 0; lineCount < numberOfInputLines; lineCount++) {
currentLine = scanner.nextLine();
fileRow = new ArrayList(Arrays.asList(currentLine.split(" ")));
fileContents.add(fileRow);
}
} catch(Exception e) {
System.out.println("Read Error");
return null;
} finally {
scanner.close();
}
return fileContents;
}
所以,我基本上读了第一行,找到要到达的行数,然后使用Scanner读取它们。现在,由于某种原因,我继续得到ArrayIndexOutOfBoundsException。是因为这种输入法吗?
答案 0 :(得分:0)
由于您没有堆栈跟踪,因此有点难以缩小问题范围,但您的错误可能来自此行:
int numberOfOutputLines = Integer.parseInt(fileRow.get(1));
如果
,将返回该错误ArrayList<String> fileRow = new ArrayList(Arrays.asList(currentLine.split(" ")));
只会产生一个字符串。尝试分离它;在使用Arrays.asList之前,首先将分割线指定给数组。
由于您没有可以使用的堆栈跟踪,所以这一切都很模糊。