注意:
我已经准备好了文章“什么是NPE以及如何修复它”。 然而,文章没有解决特定的数组,我 suspect是我代码中的错误来源。
这是一个从String构造一个UPC代码(12位)作为int []数组的程序(必须使用charAt()和getNumericValue。但是它会在构造函数中抛出NullPointerException。
public class UPC {
private int[] code;
public UPC(String upc) {
int[] newUPC = new int[12];
char currentChar;
for (int i=0; i<upc.length();i++) {
currentChar = upc.charAt(i);
code[i] = Character.getNumericValue(currentChar);
}
}
public static void main (String[] args){
// call static method to display instructions (already written below)
displayInstructions();
// While the string entered is not the right length (12 chars),
// tell the user to enter a valid 12-digit code.
Scanner scn = new Scanner(System.in);
// Declare string and read from keyboard using Scanner object
// instantiated above
String str = scn.nextLine();
if (str.length()!=12) {
System.out.println("Please Enter a Valid 12-Digit Code");
} else {
System.out.println("You are good");
}
// Create a new UPC object, passing in the valid string just
// entered.
UPC ourUPC = new UPC(str);
答案 0 :(得分:1)
private int[] code;
为空。你必须创建它:
private int[] code = new int[12];
或更具活力:
public UPC(String upc) {
code = new int[upc.length()];
}
答案 1 :(得分:0)
在使用此数组code
之前,您应该像这样初始化它:
private int[] code = new int[12];
或者像这样的构造函数:
private int[] code;
public UPC(String upc) {
code = new int[12];