我已经检查并注意到有关于这个主题的其他几个主题,但是我没有找到任何直接针对这个特定问题的线索,我也没有看到它的答案。 所以这是我的代码:
public static boolean equals(int[] array1, int[] array2)
{
boolean trueFalse = true;
while(array1.length == array2.length)
{
int i = 0;
int j = 0;
if(array1[i] == array2[j])
{
i++;
j++;
return trueFalse;
}
else
{
trueFalse = false;
break;
}
}
return trueFalse;
我有2个阵列:
int[] array = {2, 30, 22, 1, 5};
int[] array1 = {2, 30, 4, 1, 5};
虽然它们显然不相等但程序返回 true 。 我知道内置函数 Arrays.equals(),但我想手动完成它以完整地理解函数。
答案 0 :(得分:7)
public static boolean equals(int[] array1, int[] array2) {
if (array1.length != array2.length) {
return false;
}
for (int i = 0; i < array1.length; ++i) {
if (array1[i] != array2[i]) {
return false;
}
}
return true;
}
Arrays.equals
implementation与此非常相似。它还会对两个数组进行空值检查,以避免抛出NullPointerException
。
答案 1 :(得分:0)
试试这个:
boolean check(int[] arr1, int[] arr2){
if (arr1.length != arr2.length) return false;
for(int i=0; i<arr1.length; i++){
if (arr1[i] != arr2[i])
return false;
}
return true;
}
答案 2 :(得分:0)
你的问题是while
循环对if()
语句只有一次相同,比较两个数组你可以使用下面的代码:
public static boolean equals(int[] array1, int[] array2) {
if (array1.length != array2.length) {
return false;
} else {
for (int i = 0; i < array1.length; i++) {
if (array1[i] != array2[i]) {
return false;
}
}
return true;
}
}
答案 3 :(得分:0)
尝试这样的事情。将控制变量(我已将其重命名为equal
)设置为true,如果有任何失败(数组大小不同或元素不相等),则将其设置为false,break并返回。 / p>
请注意,您只需要一个索引,因为数组必须具有相同的大小,并且数组相同,必须具有相同顺序的相同元素。
此外,有点意见,但只有一个返回声明可能有利于可读性和维护。
public static boolean equals(int[] array1, int[] array2) {
boolean equal = true;
if (array1.length == array2.length) {
for (int i = 0; i < array1.length; i++) {
if (array1[i] != array2[i]) {
equal = false;
break;
}
}
} else {
equal = false;
}
return equal;
答案 4 :(得分:0)
-mcpu=cortex-m3 -mthumb -O3 -fmessage-length=0 -ffunction-sections -fdata-sections -flto -Wall -Wextra -g3 -std=gnu11
return
(array1[i] == array2[j])
也将永远循环
代码应该是这样的:
while