测试数组是否相互反转的方法未通过测试

Method to test if arrays are the reverse of each other not passing test

我应该创建一个方法来测试两个数组是否具有相同的值,但顺序相反。

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");

我的方法没有通过测试,我是不是在我的代码某处疏忽了?

是的,您正在以相同的顺序索引两个数组。您实质上是在检查它们是否相等,而不是它们彼此相反。

此外,请记住函数可以在任何时候 return 考虑一下这一点,并考虑在数组如下所示的情况下如何使您的函数更高效:

[1,2,3] 和 [4,2,4].

您实际上需要进行多少次比较才能告诉我们数组不一样。

这是你应该做的:

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