1

テキスト ファイルから 2 次元配列に値を追加しようとすると、nullPointerException が発生します。最初の 2 つの値によって、行と列が決まります。何がそれを投げているかについてのアイデア。例外処理と print ステートメントを無視します。配列を初期化しようとしていますが、戻って少し強化します。

public Help(String filename) throws FileNotFoundException,
        InvalidFileFormatException {
    this.filename = filename;

    System.out.println("Reading in file: " + filename);

    String number = "";
    int row = 0;
    int col = 0;
    int count = 0;

    try {
        Scanner inputFile = new Scanner(new File(filename));

        while (inputFile.hasNextInt()) {
            row = Integer.parseInt(inputFile.next());
            col = Integer.parseInt(inputFile.next());
            System.out.println("Row : " + row);
            System.out.println("Col : " + col);
            baseMap = new double[row][col];
            System.out.println(baseMap[2][4]);
            for (int i = 0; i < baseMap.length; i++){
                for (int j = 0; j < baseMap[i].length; j++){
                    baseMap[i][j] = Double.parseDouble(inputFile.next());
                }
            }
        }
System.out.println(baseMap[2][4]);
    } catch (Exception e) {
        System.out.println(e.toString());
    } 

OUTPUT ファイルの読み取り: sampleMap2.txt 行: 5 列: 5 0.0 スレッド「メイン」で例外 java.lang.NullPointerException

4

1 に答える 1

2

ここでどのような価値が期待されますか。

baseMap = new double[row][col];
System.out.println(baseMap[2][4]);

行== 1の場合はどうですか?

また、次の場所にデータがない場合はどうなりますか:

baseMap[i][j] = Double.parseDouble(inputFile.next());

十分なデータがないだけかもしれません。

于 2013-09-09T07:59:00.810 に答える