这是获得此拼图输入的正确方法吗?

时间:2013-07-22 03:13:29

标签: java stdin indexoutofboundsexception

我使用此方法获取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。是因为这种输入法吗?

1 个答案:

答案 0 :(得分:0)

由于您没有堆栈跟踪,因此有点难以缩小问题范围,但您的错误可能来自此行:

int numberOfOutputLines = Integer.parseInt(fileRow.get(1));

如果

,将返回该错误
ArrayList<String> fileRow = new ArrayList(Arrays.asList(currentLine.split(" ")));

只会产生一个字符串。尝试分离它;在使用Arrays.asList之前,首先将分割线指定给数组。

由于您没有可以使用的堆栈跟踪,所以这一切都很模糊。