我似乎在第15行的代码中得到了NullPointerException,但我无法理解为什么。我现在已经坚持了几个小时,而且我不知道如何修复它。我已经阅读了NullPointerException是什么,我想我已经清楚地了解它是什么,但我认为我的if
- 声明会修复它,但显然不是。
以下是代码:
package learning;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Index{
public static void main(String args[]){
Index indexObject = new Index();
String filePath = "C:\\Users\\Edvin\\Desktop\\inputPrices.txt";
Scanner inputScanner = new Scanner(System.in);
int average = 0;
if(indexObject != null){
average = indexObject.findAverage(getFileInfo(filePath).split(","));
}
else{
System.out.println("Object instance is null. Terminating program.");
}
int currentItemInput = inputScanner.nextInt();
if(currentItemInput<average && currentItemInput != 0){
}
}
private static String getFileInfo(String x){
File listOfPrices = new File(x);
String error = "An error occurred";
try{
BufferedReader getInfo = new BufferedReader(new FileReader(listOfPrices));
String prices = getInfo.readLine();
while(prices != null){
prices = getInfo.readLine();
}
return prices;
}
catch(FileNotFoundException e){
System.out.println("Couldn't find File");
System.exit(0);
return error;
}
catch(IOException e){
System.out.println("An I/O error occurred");
System.exit(0);
return error;
}
}
public int findAverage(String[] tempIndivPrices){
int x = 0;
int y = 0;
int total;
int [] indivIntPrices = null;
for(String i : tempIndivPrices){
indivIntPrices[x] = Integer.parseInt(tempIndivPrices[x]);
x++;
}
for (int element : indivIntPrices){
total =+ indivIntPrices[element];
if(element==indivIntPrices.length-1){
int result = total / indivIntPrices.length;
System.out.println(result);
return result;
}
}
return 0;
}
}
答案 0 :(得分:2)
您正在声明一个数组,但在此行中将其初始化为null:int [] indivIntPrices = null;
indivIntPrices
现在是一个空指针。然后你试图在两行之后indivIntPrices[x] = ...
访问这个数组,这不会起作用,因为变量没有指向一个数组。
要解决此问题,请分配一个与输入数组大小相同的新整数数组:
int [] indivIntPrices = new int[tempIndivPrices.length];
答案 1 :(得分:1)
尝试检查这部分代码: getFileInfo(文件路径)
你得到了正确的结果吗?它是唯一可以解决此错误的部分。
答案 2 :(得分:0)
删除此循环:
while(prices != null){
prices = getInfo.readLine();
}
然后,它有效。