2011-03-01 115 views
0

我有四個數組,如下所示。比較數組java

  1. 主串陣列 - 包含一個主弦

  2. 用戶串數組的話 - 包含用戶字符串

  3. 省略字詞陣列的話 - 包含用戶的漏字串

  4. 值數組 - 包含每個單詞的用戶串數組中的值

我有另一個空陣列來分配新值。我正在做的是如下。

  1. 將主要字符串中的每個元素與用戶字符串中的相應元素進行比較。
  2. 如果兩個元素匹配,則將值數組的相應元素分配給新值數組。
  3. 否則檢查元素是否與缺少的字詞數組匹配。
  4. 如果它匹配將新值數組中的相應元素賦值爲「0」。

我做了什麼到現在如下。

但我得到一個ArrayIndexOutOfBoundsException因爲數組不是相同的大小。請告訴我一種避免這種情況的方法。

簡而言之,我想要的是,我有一個主要字符串和一個用戶字符串。用戶字符串中的每個單詞都有相應的值,並存儲在值數組中。我想將這些值添加到主字符串中可以在用戶字符串中找到的單詞中,將0添加到缺少的單詞中。

+1

你應該避免使用數組,如果可以的話,並使用ArrayList而不是 – 2011-03-01 09:17:29

+0

這就是數組的問題。他們不可調整大小。您應該開始查看ArrayList的文檔。 – asgs 2011-03-01 09:26:45

+0

@Shervin如果他使用完全相同的方法,但與ArrayLists,而不是你所建議的,它仍然會給一個java.lang.IndexOutOfBoundsException。嘗試從空ArrayList中刪除。除非你檢查isEmpty當然。 – 2011-03-01 09:38:31

回答

1

它是一個非常簡單的解決方案:因爲您知道userStringArray始終會小於或等於mainStringArray,因此您可以通過userStringArray執行for循環。然後您需要使用userStringArray.length注意到userStringArray的長度,並使用該長度值來獲取mainStringArray的部分,該部分在userStringArray中沒有對應的元素,然後繼續對這些額外字符執行任何操作。

您可以選擇使用ArrayLists而不是數組,但是您必須通過檢查isEmpty()條件來更改您的循環以解決從空ArrayList中刪除值的問題。其餘的邏輯可以是相同的。

編輯:

這個問題很曖昧。因此,我將粗略地告訴你如何去做和ArrayLists一樣的事情。代碼的唯一有形區別是檢查userStringArray.isEmpty()。

import java.util.ArrayList; 
    ArrayList<Double> newValueArray = new ArrayList(); 
    ArrayList<Double> userStringArray = new ArrayList(); 
    ArrayList<Double> mainStringArray = new ArrayList(); 

    for (int i = 0; i < mainStringArray.size(); i++) { 
     if(!userStringArray.isEmpty){ 
      if (userStringArray.get(i).equals(mainWordsArray.get(i))){ 
       newvalueArray.remove(i); 
       newvalueArray.add(i, valueArray.get(i));     
      } else { 
       if (mainStringArray.get(i).equals(missingWordsArray.get(i))){ 
       newValueArray.remove(i); 
       newValueArray.add(i, 0); 
       } 
      } 

      System.out.println(mainStringArray[i] + " " + newValueArray.get(i)); 
     } 


    } 
+0

我不能這樣做,因爲缺少的單詞不是按照順序排列的。我必須在主字符串數組中找到缺失的單詞,並將它們賦值爲0. – gishara 2011-03-01 09:43:20

+0

@gishu您的問題非常模糊。無論如何,我已更新我的代碼,以反映您的原始答案,除了使用數組列表。 – 2011-03-01 09:58:10

+0

非常感謝Dhruv。是的,問題是不明確的。我的任務是我有一個完整的字符串(主要字符串)和不完整的一個。 (用戶字符串)我想在用戶字符串中找到缺失的單詞(包含缺少的單詞數組),並將它們的值指定爲0.我將編輯問題以顯示它更清晰。我嘗試了您的方法,但我正在使用值數組中的double值,我得到錯誤。請幫幫我。 – gishara 2011-03-01 11:04:05

0

根據這種情況,所有四個數組必須具有相同的大小。所以當你聲明數組時,只需將它們的大小設置爲相同即可。那會做。

+0

我不能這樣做,因爲數組是由兩個字符串作爲用戶口語和主字符串的輸出。 – gishara 2011-03-01 09:42:15