使用从文件输入的数据填充带有字符的2D数组 - Java

时间:2015-03-08 00:04:56

标签: java arrays nullpointerexception

我正在尝试使用从文件输入的数据来填充字符数组,而在解析文件时我也试图存储一些值,但是事情不起作用。

这是我的代码:

    File file = new File(filename); // filename is a user input
    Scanner fileScan = new Scanner(file);   

    // determine the board size
    ROWS = fileScan.nextInt();
    COLS = fileScan.nextInt();
    fileScan.nextLine();

    char[][] board = new char[ROWS][COLS];    

    for( int row = 0; row < board.length; row++){
        for (int col = 0; col < board[row].length ; col++){
            if (fileScan.hasNext()) {
                board[row][col]= fileScan.next().charAt(0);
                if(board[row][col] == START){
                    startingPoint = new Point(row, col);
                }                   
                if(board[row][col] == END){
                    endingPoint = new Point(row, col);
                }
            }
        }
    }
}

鉴于此输入文件已

2 2
1 O O 
O O O 
O X 2 

这是我运行时得到的(当我尝试打印数组时):

     O O 
     O X 

   java.lang.NullPointerException
    at java.awt.Point.<init>(Unknown Source)
    at CircuitBoard.getStartingPoint(CircuitBoard.java:139)
    at CircuitTracer.<init>(CircuitTracer.java:120)
    at CircuitTracer.main(CircuitTracer.java:36)

阻止我获取startingPoint值的错误是什么?

1 个答案:

答案 0 :(得分:0)

好吧,我试过运行代码: 考虑我对数据大小2x2 --> 3x3

的评论

它运作正常

文件应为

3 3
1 O O 
O O O 
O X 2

阅读代码很好, 这是我使用的阵列打印代码

for( int row = 0; row < board.length; row++){
    for (int col = 0; col < board[row].length ; col++){
        System.out.print(board[row][col] + " ");
    }
    System.out.println("");
}

这是输出:

1 O O 
O O O 
O X 2 

所以,如果这是你需要的,只需将文件中的第一行更改为3 3 并使用本答案中的打印代码