2014-06-28 205 views
-1

這是一個程序,它將字符串保存爲字符串數組中的一個鍵和數量。但是 如條件子句(// CONDITION)所示,我無法檢查天氣數組元素包含任何值或不是?如何檢查數組元素是否包含任何值

我知道它拋出一個異常「java.lang.ArrayIndexOutOfBoundsException」,因爲它不能分配內存給未指定的元素。我試圖做「nextString.equals(數組[i + 1])」,它不起作用。

請指定我可以使用的任何條件。

public void mapExample() { 
    String text = "text good text good text"; 
    String[] arrays = text.split(" "); 
    Arrays.sort(arrays); 
    for(String array :arrays){ 
    System.out.println(array); 
    } 
     int Count=0; 
     String thisSring = ""; 
     String nextString=""; 
     TreeMap<String,Integer> mapper = new TreeMap<String , Integer>(); 
     for(int i=0;i<arrays.length;++i){ 
      thisSring = arrays[i]; 
      Count++; 
      nextString = arrays[i+1]; 
      if(!thisSring.equals(nextString)){ 
       mapper.put(thisSring, Count); 
      } 


      if(//CONDITION){ 
       mapper.put(thisSring, Count); 
      } 
     } 



     Set s = mapper.entrySet(); 
      Iterator iter = s.iterator(); 
      if(iter.hasNext()){ 
      System.out.println(iter.next()); 
      Map.Entry map = (Map.Entry) iter.next(); 
      System.out.println("Key" + " " + map.getKey()); 
      System.out.println("Value" + " " + map.getValue()); 
     } 
    } 
    } 
+0

爲什麼不檢查其在地圖上? –

+0

數組的一個元素總是包含一個值。當然,有時這個值是'null',但這是一個值。 –

回答

0

你的錯誤較早那麼您認爲,

for(int i=0;i<arrays.length - 1;++i){ // Add a "- 1" because, 
    thisSring = arrays[i]; 
    Count++; 
    nextString = arrays[i+1];    // this will exceed the array length otherwise. 
    if(!thisSring.equals(nextString)){ 
    mapper.put(thisSring, Count); 
    } 
} 
0
...equals(String.valueOf(nextString)) 

讓我解釋一下,如果你要執行相當於兩個String對象的比較,「.equals」功能檢查對象是相等的,而不是對象的值。使用「.valueOf()」解決此問題。其次,您有一個「ArrayIndexOutOfBoundsException」。這通常是由所謂的偏離錯誤引起的。移動「Count ++;」到for循環的結尾,我認爲這會阻止它拋出異常。

0

首先,你必須改變:

for(int i=0;i<arrays.length;++i){ 

到:

for(int i=0;i<arrays.length-1;++i){ 

,因爲你與i+1

二跑步,因爲你使用count++ - 你是不是真正數數的東西。 你必須檢查字符串不是已經樹形圖,如果是 - 更新計數爲:

mapper.get(thisSring) + 1 

,如果它不存在,創建一個新的項目與count = 1

String thisSring = ""; 
String nextString=""; 
TreeMap<String,Integer> mapper = new TreeMap<String , Integer>(); 
for(int i=0;i<arrays.length;++i){ 
    thisSring = arrays[i]; 
    nextString = arrays[i+1]; 
    if(mapper.get(thisString) != null){ 
     mapper.put(thisSring, mapper.get(thisString) + 1); 
    } 
    else { 
     mapper.put(thisSring, 1); 
    } 
} 
0

變更爲循環:

for (int i =0;i<arrays.length;i++) { 

for (int i =0;i<arrays.length-1;i++) { 

找到下面的代碼:

for (int i =0;i<arrays.length-1;i++) { 
     thisString = arrays[i]; 
     count++; 
     nextString = arrays[i+1]; 
     if(!thisString.equals(nextString)){ 
      mapper.put(thisString, count); 
     } 

     if (i<arrays.length-2) { 
      mapper.put(thisString, count); 
     } 

} 
相關問題