问题描述
我应该编写一个方法来返回数组,但起点是一个名为 beginIndex 的整数变量。
示例:数组包含 'A'、'B'、'C'、'D' 和 beginIndex = 2。那么它应该返回 'B'、'C'、'D'(是的,在这种情况下是索引本身第二个字母也应该包括在内!)
我该怎么做?还是先改成String再改回char数组比较明智?
解决方法
您可以使用方法Arrays.copyOfRange
(Link to the Java 11 Documentation for this method)
该方法的参数为:
- 原始数组
- 开始的索引,包括
- 范围的最终索引,独占
一个如何使用它的例子:
char[] originalArray = {'a','b','c','d'};
char[] secondArray = Arrays.copyOfRange(originalArray,1,test.length);
在此示例中,secondArray
仅包含“b”、“c”和“d”。
满足您需求的方法,其中输入等于 index-1 的方法可能如下所示:
public static char[] arrayFromPosition(char[] array,int position) {
return Arrays.copyOfRange(array,position-1,array.length);
}
,
我为此创建了一个方法。这是它的样子:
public static char[] charIndex(char[] chars,int beginIndex) {
beginIndex--;
char[] result = new char[chars.length - beginIndex];
for(int i = 0; i < chars.length; i++) {
if(!(i < beginIndex)) result[i - beginIndex] = chars[i];
}
return result;
}
这是你如何使用它:
char[] chars = {'a','d','e','f','g'};
System.out.println(Arrays.toString(chars));
chars = charIndex(chars,2);
System.out.println(Arrays.toString(chars));
输出将是:
[a,b,c,d,e,f,g]
[b,g]
,
你可以使用下面的函数,它基于0-index
public Character[] stripCharArrFromIndex(Character[] arr,int index){
int arrSize = arr.length;
Character[] strippedArr = new Character[arrSize - index];
int j=0;
for(int i=index;i<arrSize;i++){
strippedArr[j]=arr[i];
j++;
}
return strippedArr;
}