【问题标题】:NullPointerException while trying to initialize a 2d array尝试初始化二维数组时出现 NullPointerException
【发布时间】:2013-09-12 16:12:29
【问题描述】:

我在尝试将文本文件中的值添加到二维数组时遇到 nullPointerException。前 2 个值确定行和列。任何想法是什么扔了它。忽略异常处理和打印语句。我正在尝试初始化数组,然后将返回并加强一点。

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());
    } 

输出 读入文件:sampleMap2.txt 行:5 色号:5 0.0 线程“主”java.lang.NullPointerException 中的异常

【问题讨论】:

  • 请添加完整的堆栈跟踪。
  • 哪个是抛出错误?
  • 对于初学者,请使用Scanner#nextInt 而不是自己调用Integer#parseInt;它更具可读性,如果失败,您将获得更多信息的异常。

标签: java arrays file-upload nullpointerexception


【解决方案1】:

您希望在这里看到什么价值;

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

如果行 == 1 会怎样?

如果没有更多数据怎么办:

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

也许你只是没有足够的数据。

【讨论】:

  • 我只是看看它是否真的在那个位置初始化了一个 0.0。它在抛出异常之前打印出 0.0。
  • 那么哪一行抛出异常?
  • 抛出异常的是不同类中的不同方法。非常抱歉浪费您的时间,但感谢您的帮助。它让我思考并帮助我找到了解决办法。
猜你喜欢
  • 2020-03-03
  • 2015-10-06
  • 1970-01-01
  • 2014-02-18
  • 2013-10-04
  • 1970-01-01
  • 2019-12-21
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多