我仍然是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 :(得分: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]
并包含额外的字符。