比较两个不同大小的数组的元素,并在java中返回布尔数组

时间:2016-01-22 01:05:08

标签: java arrays

我仍然是Java的初学者,我将不胜感激任何帮助。 我有两个不同的数组,我想比较他们的元素。返回值是一个int [],其长度为较大的数组。 int []应该包含1和0。 1表示元素相同且0不相同。当然int []的其余部分应该是零,因为它更长。 不幸的是我收到了这个错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

我的方法有什么问题?

public static int[] createVector(String[] longArr, String[] shortArr) {
    int l = Arrays.toString(longArr).length();
    int s = Arrays.toString(shortArr).length();
    int[] b = new int[l];
    for (int i = 0; i < l; i++) {
        b[i] = 0;
        for (int j = 0; j < s; j++) {
            if (longArr[i].equals(shortArr[j])) {
                b[i] = 1;
            }
        }
    }
    return b;

}

3 个答案:

答案 0 :(得分:1)

Arrays.toString(longArr).length();返回由String创建的Arrays#toString长度,为String [a, b, c] array创建{"a", "b", "c"}之类的内容。请注意,数组的长度为3,而Arrays#toString#length将返回>3

您可以使用longArr.length类似 shortArr.length)获取数组的length

答案 1 :(得分:0)

您应该使用longArr.length,而不是Arrays.toString(longArr).length()。后者返回数组的字符串表示形式,而不是实际的数组。

此外,创建一个长度等于较长数组长度的零数组可能更容易。然后,您只需要遍历较小数组的长度,并根据需要将零更改为1。

答案 2 :(得分:0)

您可以使用length属性访问数组的大小。

longArr.length

Arrays.toString(longArr).length()返回数组的字符串表示的长度,该字符串表示可能看起来[more, like, this]并包含额外的字符。