我应该制作一个方法来测试两个数组是否具有相反的相同值。
public static boolean areReversed (int [] t , int [] q)
{
boolean identical = false;
if(t.length != q.length){ identical = false;}
else{
for(int x = (t.length -1) , y = 0; -1 < x; x-- , y++)
{
if(t[y] == q[x])
{
identical = true;
}
}
}
return identical;
}
我通过使用以下预定数组
运行这些if语句来测试它int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int[] b = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int[] c = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] d = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int[] e = {1, 2, 3, 4, 5, 4, 3, 2, 1};
int[] f = {1, 2, 3, 4, 4, 3, 2, 1};
int[] g = {1, 3, 5, 7, 9, 0, 2, 4, 6, 8};
int[] h = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int[] i = {1, 1, 3, 3, 5, 5, 7, 7, 9, 9};
//test for areReversed, uncomment the next two lines to test your method
if(areReversed(a, b) && !areReversed(a, g) && !areReversed(a, c)) System.out.println("Basic areReversed method test PASSED");
else System.out.println("Basic areReversed method test FAILED");
我的方法没有通过测试,我是否在代码的某处进行了疏忽?
答案 0 :(得分:1)
是的,您正以相同的顺序索引到两个数组。你基本上是在检查它们是否相等,而不是它们是相反的。
另外,请记住函数可以随时返回想想这个并考虑如何在数组看起来像这样的情况下使函数更有效:
[1,2,3]和[4,2,4]。
在告诉我们阵列不相同之前,您确实需要进行多少次比较。
答案 1 :(得分:0)
这是你应该做的:
public static boolean areReversed (int [] t , int [] q)
{
if(t.length != q.length) return false;
for(int x = (t.length -1) , y = 0; -1 < x; x-- , y++)
{
if(t[y] != q[x]) return false;
}
return true;
}
请注意,当知道反向数组不相等时,我会从方法返回false
。因此,最后,如果还没有返回false
,则必须将数组反转为相等,因此返回true
。