Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较java中的数组_Java_Arrays - Fatal编程技术网

比较java中的数组

比较java中的数组,java,arrays,Java,Arrays,我有四个数组,如下所示 主字符串数组-包含主字符串的单词 用户字符串数组-包含用户字符串的单词 缺少单词数组-包含用户字符串中缺少的单词 值数组-包含用户字符串数组中每个单词的值 我有另一个空数组来分配新值。我正在做的事情如下 将主字符串中的每个元素与用户字符串中的相应元素进行比较 如果两个元素匹配,则将值数组的对应元素指定给新值数组 否则,请检查元素是否与缺少的单词数组匹配 如果匹配,则将“0”分配给新值数组中的相应元素 下面是我到目前为止所做的工作 for (int i = 0; i

我有四个数组,如下所示

  • 主字符串数组-包含主字符串的单词

  • 用户字符串数组-包含用户字符串的单词

  • 缺少单词数组-包含用户字符串中缺少的单词

  • 值数组-包含用户字符串数组中每个单词的值

  • 我有另一个空数组来分配新值。我正在做的事情如下

  • 将主字符串中的每个元素与用户字符串中的相应元素进行比较
  • 如果两个元素匹配,则将值数组的对应元素指定给新值数组
  • 否则,请检查元素是否与缺少的单词数组匹配
  • 如果匹配,则将“0”分配给新值数组中的相应元素
  • 下面是我到目前为止所做的工作

        for (int i = 0; i < mainStringArray.length; i++) {
    
            if (userStringArray[i].equals(mainWordsArray[i])){
               newvalueArray[i] = valueArray[i];
            }
            else {
                if (mainStringArray[i].equals(missingWordsArray[i])){
                    newValueArray[i] = 0;
                }
            }
    
            System.out.println(mainStringArray[i] + " " + newValueArray[i]);
        }
    
    
      }
    
    for(int i=0;i
    但是我得到了一个
    ArrayIndexOutOfBoundsException
    ,因为数组的大小不同。请告诉我避免这种情况的方法


    简而言之,我想要的是,我有一个主字符串和一个用户字符串。用户字符串中的每个单词都有相应的值,并存储在值数组中。我想将这些值添加到主字符串中可以在用户字符串中找到的单词中,并将0添加到缺少的单词中。

    这是一个非常简单的解决方案:因为您知道
    userStringArray
    总是小于或等于
    mainStringArray
    ,所以在
    userStringArray
    上执行for循环。然后,您需要使用
    userStringArray.length
    记录
    userStringArray
    的长度,并使用该长度值获取
    mainStringArray
    中没有相应元素的
    userStringArray
    部分,然后继续使用这些额外字符执行任何操作

    您可以选择使用ArrayList而不是arrays,但必须通过检查
    isEmpty()
    条件来更改循环,以说明从空ArrayList中删除值的原因。其余的逻辑可以是相同的

    编辑:

    这个问题很含糊。因此,我将大致向您展示如何做与您编写的相同的事情,除了使用ArrayList。代码唯一明显的区别是对userStringArray.isEmpty()的检查

    import java.util.ArrayList;
    ArrayList newValueArray=新ArrayList();
    ArrayList userStringArray=新的ArrayList();
    ArrayList mainStringArray=新的ArrayList();
    对于(int i=0;i
    根据这种情况,所有四个阵列的大小必须相同。因此,当您声明数组时,只需使它们的大小相同即可。那就可以了。

    如果可以的话,你应该避免使用数组,而是使用ArrayList,这就是数组的问题所在。它们不可调整大小。您应该开始查看ArrayList的文档。@Shervin如果使用完全相同的方法,但按照您的建议使用ArrayList,则仍会给出java.lang.IndexOutOfBoundsException。尝试从空的ArrayList中删除。除非你检查一下,我当然是空的。我还没有仔细看清楚你想做什么。但是你有没有尝试过使用更多循环的想法。一些额外的循环将循环通过missingWordArray和userStringArray?添加
    作业
    标记>有什么困难?我不能这样做,因为数组是由两个字符串组成的,这两个字符串作为用户说出的单词和一个主字符串的输出。我不能这样做,因为缺少的单词不是按照顺序排列的。我必须在主字符串数组中找到缺少的单词,并将其赋值为0。@gishu您的问题非常模糊。无论如何,除了使用ArrayList,我已经更新了我的代码以反映您的原始答案。非常感谢Dhruv。是的,这个问题模棱两可。。我的任务是我有一个完整的字符串(主字符串)和一个不完整的字符串。(用户字符串)我想在用户字符串中查找缺少的单词(包含在缺少的单词数组中),并将其值指定为0。我将对问题进行编辑以使其更清晰。我尝试了您的方法,但我在值数组中使用了双值,并且出现了错误。请帮帮我。@gishu若要翻倍,请将ArrayList更改为ArrayList。老实说,我很惊讶你没有猜到这一点。请注意,“Double”是一个类,它是相关的,但与“Double”不同,Double是一个原始类型。对于这个问题,我真的很抱歉,它听起来很愚蠢。:)但我对集合的了解很差。现在,我在“newValueArray.remove(I)=0”行中得到一个错误,“意外类型所需变量找到值”。请给我解释一下。
        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));
            }
    
    
         }