Array构造函数抛出NullPointerException

时间:2016-02-23 13:17:53

标签: java arrays nullpointerexception

  

注意:

     

我已经准备好了文章“什么是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);

2 个答案:

答案 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];