2017-04-09 50 views
-3
public void setAns() { 

     if("TF".equals(queType)){ 
      ans.add("True"); 
      ans.add("False"); 
     } 
     else if("MC".equals(queType)){ 
      System.out.println("Enter choice 1 of 4"); 

      String ch1 = StdIn.readLine(); 
      ans.add(ch1); 
      System.out.println("Enter choice 2 of 4"); 
      String ch2 = StdIn.readLine(); 
      ans.add(ch2); 
      System.out.println("Enter choice 3 of 4"); 
      String ch3 = StdIn.readLine(); 
      ans.add(ch3); 
      System.out.println("Enter choice 4 of 4"); 
      String ch4 = StdIn.readLine(); 
      ans.add(ch4); 

     } 
     else if("L5".equals(queType)){ 
      ans.add("1"); 
      ans.add("2"); 
      ans.add("3"); 
      ans.add("4"); 
      ans.add("5"); 
     } 
    } 

ans是一個Arraylist。我正在嘗試添加用戶的字符串輸入。當我運行它時,它會打印第一條消息,但在輸入「ch1」的值時出現錯誤。它基本上不讀取它,它會提示我一個空指針異常無法將用戶的值輸入到數組,NullPointerException錯誤

+0

基本上,當你結束了'null.member'或'空[指數] NPE被拋出'。由於我們沒有看到完整的代碼,並且沒有完整的堆棧跟蹤,所以我們無法確定發生了什麼,但根據您的描述,它看起來像來自'ans.add(ch1)'的NPE。因爲ArrayList沒有問題,所以'ans.add(null)'應該正常工作,這表明它是'null.ans(ch1)',這意味着你沒有用ArrayList實例初始化'ans'。 – Pshemo

回答

0

這幾乎肯定是由於ans在調用add之前沒有被初始化。你可以嘗試setAns()之前初始化它被稱爲或嘗試聲明爲一個局部變量,例如:

List<String> ans = new ArrayList<>();