在反向程序中是不是相等[关闭]
Posted
技术标签:
【中文标题】在反向程序中是不是相等[关闭]【英文标题】:Is Equal In Reverse Program [closed]在反向程序中是否相等[关闭] 【发布时间】:2015-06-30 03:50:12 【问题描述】:这个程序将查看两个数组中的元素,然后它会检查第一个数组是否与第二个数组相反。如果是则返回 true,否则返回 false。
示例:
Array1 = 1,2,3,4,5
Array2 = 5,4,3,2,1
输出:真
示例 2: 数组1 = 1,2,3,4,5
Array2 = 1,2,3,4,5
输出:假
public class Test
public static void main(String [] args)
int [] w = 1,2,3,4,5;
int [] e = 5,4,3,2,1;
System.out.println(isEqualInReverse(w,e));
public static boolean isEqualInReverse(int [ ] a, int [ ] b)
for (int i = 0; i < a.length; i++)
for(int p = b.length - 1; p >= 0; p--)
if (a[i] != b[p])
return false;
return true;
我已尝试实现此功能,但未从我的程序中获得预期结果。我做错了什么?
【问题讨论】:
你也可以先反转第二个数组。 Collections.reverse() 可以帮助解决这个问题。 【参考方案1】:您嵌套了两个 for 循环,因此您将第一个循环中的每个元素与第二个循环中的每个元素进行比较。
相反,您需要从 1 末尾开始的单个循环和索引。
即
for (int i=0;i<b.length;i++)
if (b[i] != a[a.length-1-i])
return false;
return true;
确实你应该在进入这个循环之前检查两个数组的长度是否相同。
【讨论】:
应该是a.length - 1 - i
。
@pbabcdefp 非常正确,好地方。
为什么我的代码不能使用嵌套的 for 循环?
@edwardlavaire 拿着笔和纸坐下来,一步一步地弄清楚每个程序在做什么。嵌套的 for 循环将一个数组中的每个条目与另一个数组中的每个条目进行比较。【参考方案2】:
你应该只使用一个从 1 结尾的索引的循环。
public static boolean isEqualInReverse(int [ ] a, int [ ] b)
for (int i=0; i < b.length; i++)
if (b[i] != a[a.length-1-i])
return false;
return true;
【讨论】:
好的,你能解释一下为什么我的代码不起作用吗?以上是关于在反向程序中是不是相等[关闭]的主要内容,如果未能解决你的问题,请参考以下文章