2013-09-01 37 views
0

出現NullPointerException異常。 (cs106A講義6 - 使用哈希映射名稱計數) 調試器告訴我位於@ String輸入變量的問題。我不知道如何解決它。 感謝您的閱讀。CS106A講義6異常java.lang.NullPointerException

import acm.io.*; 
import acm.program.*; 
import acm.util.*; 
import java.util.*; 
import java.io.*; 
import java.io.BufferedReader.*; 
import java.lang.*; 

public class NameCounts extends ConsoleProgram{ 
// hashmap 
static HashMap<String,Integer> myUniq = new HashMap<String,Integer>(); 
static String input ; 

static public void insertName(){ 

    try { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    while(true){ 
     System.out.println("Enter name:"); 

       // if keyboard input contain new unique name , 
       // store it in the hashmap and count the value +1 
     input = br.readLine(); 
     if(input.equals("")) break; 
     if(myUniq.containsKey(input) ==false){ 
      Integer temp = myUniq.get(input); 
      temp = temp + 1; 
      myUniq.put(input,temp); 
     } 

     } 
    } 
    catch (IOException e){ }; 
} 
    // print and show every single hash map and count value 
    static public void releaseUnique(){ 
      for(int i= 1 ; i < myUniq.size() ; i++){ 
    System.out.println("Entry"+"[" + input + "]"+"has count"+myUniq.get(input));   
      } 
} 

public static void main (String[] args){ 
    insertName(); 
    releaseUnique(); 
    } 
} 

errorlog

+0

你沒有寫你的課程講義和名稱,並發表您的logcat的輸出 –

+0

請添加異常棧跟蹤 – Nailgun

回答

1

我想你應該改變

if(myUniq.containsKey(input) ==false){ 
    Integer temp = myUniq.get(input); 
    temp = temp + 1; 
    myUniq.put(input,temp); 
} 

if(myUniq.containsKey(input)) { 
    Integer temp = myUniq.get(input); 
    temp = temp + 1; 
    myUniq.put(input, temp); 
} else { 
    myUniq.put(input, 1); 
} 
+0

哇,這太神奇了。所以HashMap並沒有象INT那樣自動初始化Int值爲0。謝謝賜教。 – Vittori

+0

不客氣。請將答案標記爲已接受。 – Nailgun

相關問題