【问题标题】:Compare elements of two different size arrays and return boolean array in java比较两个不同大小数组的元素并在java中返回布尔数组
【发布时间】:2016-01-22 01:05:08
【问题描述】:

我仍然是 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;

}

【问题讨论】:

  • 您只需要一个循环,而不是两个。它应该从 0 到较短的长度,并在必要时填写“true”。 “tail”将保持默认的“false”。
  • 是的,一个循环。但仍然无法理解它。与 for (int i = 0; i
  • 为什么我需要一个循环?我需要在这个例子中得到:这两个数组 {bob, charlie, john, lee, bruce, jack} 和 {john, jack} 的布尔 int[]。我的结果应该是 {0,0,1,0,0,1}。这不适用于一个循环。
  • 好吧,我看错了问题,我以为你想比较相同位置的相同条目。你是对的,如果你想测试做集合交集,你需要两个循环。

标签: java arrays


【解决方案1】:

Arrays.toString(longArr).length(); 返回由Arrays#toString 创建的String 的长度,它创建String 类似[a, b, c] 的字符串array {"a", "b", "c"}。请注意,数组的长度为3,而Arrays#toString#length 将返回&gt;3

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

【讨论】:

  • 它不适用于 longArr.length,我得到 length = 1。不知道为什么。抱歉,我没有足够的声望来投票!
  • longArrshortArr 的值是多少?
  • 字符串[]。是否可以通过其他任何东西?
  • 感谢您的耐心等待。当我将它打印到控制台时,我得到表单 [a,b,c]
  • 我执行 allStrings = StringBuilder.toString() 并将其以 String[] baseVectorArray = {allStrings} 的形式放入数组中。当我将它打印到控制台时,我得到了 [a,b,c] 的形式
【解决方案2】:

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

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

【讨论】:

  • 但是当我做 longArr.length 我得到 length = 1 !我不知道为什么,但这就是我转向 Arrays.toString(longArr).length(); 的原因
【解决方案3】:

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

longArr.length

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

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 2021-11-04
    • 2014-03-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    相关资源
    最近更新 更多