public class Main {
public static void main(String[] args) {
int[] a={1,2,3};
int[] b={1,2,3};
equals(a,b);
}
private static boolean equals(int[] c,int[] d) {
int i = 0;
while (c[i] == d[i]) {
i++;
}
if(i!= c.length)
return false;
else
return true;
}
}
eqauls是比较数组内容是否相同的方法,但这样写并不能正常运行,出现了报错
原因是写了一个死循环:如果两个数组的内容是相同的,那么在比较完最后一位后,循环会尝试继续比较数组的下一个位置,但这些位置实际上是超出了数组的长度,因此这些比较会被认为是相同的,所以需要在while循环里添加一个结束循环的条件才行
public class Main {
public static void main(String[] args) {
int[] a={1,2,3};
int[] b={1,2,3};
boolean yes=equals(a,b);
System.out.println(yes);
}
private static boolean equals(int[] c,int[] d) {
int i = 0;
while (i< c.length&&c[i] == d[i]) {//i< c.length应该在c[i] == d[i]之前判断,要先知道i是否超出数组的长度,才进行下一步的判断
i++;
}
if(i!= c.length)
return false;
else
return true;
}
}