Я очень новичок в этом, поэтому прошу прощения, если это может показаться очень простым. В любом случае, я пытаюсь прочитать ввод из файла и поместить эти данные в массив, чтобы впоследствии его можно было графически отобразить. проблема, с которой я столкнулась, заключается в том, чтобы помещать метки данных в массив.Сканирование из файла и получение исключения с нулевым указателем в java
Вот что я в настоящее время:
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 и получить строки перед удвоением, он превращает двойники в строки. Итак, каков наилучший способ получить каждый тип данных в соответствующем массиве?
Благодарим вас за любые предложения, которые могут возникнуть у вас!
Это сделал это! Спасибо. – Smidem