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