-1

このメソッドを使用して、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;
}

だから、基本的には最初の行を読んで、次に来る行の数を見つけてから、スキャナーを使用してそれらを読み取ります。さて、何らかの理由で ArrayIndexOutOfBoundsException を取得し続けます。この入力方法のせいでしょうか??

4

1 に答える 1

0

スタックトレースがないため、問題を絞り込むのは少し難しいですが、エラーは次の行から発生する可能性があります。

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

そのエラーを返すのは

ArrayList<String> fileRow = new ArrayList(Arrays.asList(currentLine.split(" ")));

1 つの文字列のみになります。それも分離してみてください。Arrays.asList を使用する前に、最初に分割線を配列に割り当てます。

作業するスタックトレースがないため、これはすべてあいまいです。

于 2013-07-22T03:30:08.637 に答える