2011-03-01 127 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