java中使用数组的前缀
我正在编写一个方法,它接受一个整数数组作为输入,并返回另一个字符串数组,每个字符串表示输入数组的非空前缀。例如,如果输入 数组是:
<;3、1、4>
然后字符串值的输出或返回数组应为:
<;“[3],”[3,1],“[3,1,4]”>
我的代码中有一个错误,我似乎找不到
public static String[] getAllPrefixes(int[] numbers) {
String[] result = null;
String[] arr = new String[numbers.length];
String seq = "" + numbers[0];
for (int i = 0; i < numbers.length; i++) {
arr [i] = "[" + seq + "]";
seq += ", " + numbers [i + 1];
}
result = arr;
return result;
}
# 1 楼答案
你的代码有一些问题
在这一行
seq += ", " + numbers [i + 1];
当循环位于最后一项时i+1
将超出索引初始化seq时,您在数组中添加了第一个项,因此在循环中,您应该忽略该项,并从i=1开始,您还应该在arr数组中添加该项,在循环中,您应该首先更新req,然后添加到arr,因此最终代码如下所示
您还可以使用string的StringBuilder实例进行追加,代码如下
注意:搜索字符串vs StringBuilder
# 2 楼答案
你一定得到了
ArrayIndexOutOfBoundException
,这是因为seq += ", " + numbers[i + 1]
行。 例如,假设数字数组的长度是3,那么For循环将一直运行到i=2
。在这种情况下,你的numbers[i+1]
将是numbers[3]
,它不存在,并且会给出一个异常