【发布时间】: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