【问题标题】:Scanning from a file and getting a null pointer exception in java从文件中扫描并在java中获取空指针异常
【发布时间】:2013-11-18 19:46:25
【问题描述】:

我对此很陌生,所以如果这看起来很基本,我深表歉意。无论如何,我正在尝试从文件中读取输入并将该数据放入一个数组中,以便稍后绘制它。我遇到的问题是将数据的标签放入数组中。

这是我目前拥有的:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class P6 {

    static String titlePie = "Pie Chart";
    static int numElements;
    static String[] labels;
    static double[] dataPieElements;

    public static void main(String[] args){

        P6 p6 = new P6();
        p6.readFile(args[0]);
        System.out.println(numElements);
        System.out.println(Arrays.toString(dataPieElements));
        System.out.println(Arrays.toString(labels));
    }

    private void readFile(String inputFile) {
        try {
            Scanner in = new Scanner(new File(inputFile));
            while (in.hasNext()){
                numElements=in.nextInt();
                if (in.hasNextDouble()){
                    for (int i = 0; i<numElements; i++){
                        dataPieElements[i]=in.nextDouble();
                    }
                }
                else if (in.hasNext()){
                    for (int i = 0; i<numElements; i++){
                        labels[i]=in.next();
                    }
                }
            }
            in.close();
        }
        catch (FileNotFoundException e){
            System.out.println("File not found");
        }
    }
}

输入文件如下所示:

6
Nokia
Apple
Google
Samsung
Apple
Other
14.2
26.2
13.1
18.9
11.3
16.3

我得到的错误是: 线程“主”java.lang.NullPointerException 中的异常

所以我的想法是,因为双打在字符串之后,指针到达文件末尾并且永远不会获取字符串,但是如果我更改 if 语句的顺序并在双打之前获取字符串,它会变成双打成字符串。那么将每种数据类型放入其各自数组的最佳方法是什么?

非常感谢您提出的任何建议!

【问题讨论】:

    标签: java arrays nullpointerexception


    【解决方案1】:

    您声明了数组labelsdataPieElements,但您没有初始化这些数组,所以它们仍然是null

    当您知道需要多少时初始化它们。之后

    numElements=in.nextInt();
    

    那么……

    labels = new String[numElements];
    dataPieElements = new double[numElements];
    

    【讨论】:

    • 做到了!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多