【发布时间】:2016-11-25 19:14:24
【问题描述】:
我是编程新手,需要一些帮助。我应该用自己的方法检查一个数组是否有另一个数组的子序列。这意味着如果第一个数组是 {1, 2, 3, 4, 5},第二个是 {1, 2, 3},那么第二个是第一个的子序列。但是,如果第一个是 {1, 2, 3, 4, 5} 而第二个是 {1, 4, 5} 它不是子序列,所以第二个也必须按顺序排列。
我曾尝试通过字符串来做到这一点:
private static boolean subs(int[] array, int[] subsequence) {
String a = Arrays.toString(array);
String b = Arrays.toString(subsequence);
boolean c = false;
if (a.equals(b)) {
return true;
}
for (int i = 0; i < a.length(); i++) {
if (!(b.equals(a.substring(i, b.length() + i)))) {
c = false;
} else {
c = true;
break;
}
}
if (c == true) {
return true;
} else {
return false;
}
}
但是我得到 3 个错误,这里是打印屏幕:
这是我测试该方法的方式:
int[] fArray = { 1, 2, 3, 4, 5 };
int[] tempArray = { 2, 3, 4 };
System.out.println(subs(fArray, tempArray));
我知道我可能犯了很多错误,所以用它来打击我。
【问题讨论】:
-
请发布有问题的错误,没有外部链接。您是否在调试器中单步执行了代码?异常很明显,您超出了字符串索引的范围。所以,“b.length() + i”很可能是问题所在。
-
为什么不直接比较整数数组,而不是将它们转换成字符串呢?
-
因为我不擅长数组,而且这只是一个有趣的想法,所以我尝试了。
标签: java arrays string runtime-error subsequence