在今天的工作面试中被问到这个问题。我肯定这是个很简单的把戏,但我想不起来。我如何才能不使用“减号”(-)符号(所以循环中没有i--,或者类似的东西),从端到开始遍历一个简单的Java数组(例如,为了将所有值从右到左的总和)?
编辑:,我很确定这是一个不涉及特定于Java的结构的技巧(比如Collections)。不幸的是,我想以后我会自己考虑的,所以我没有问答案是什么。
发布于 2017-09-25 15:36:02
递归是一种选择:
int[] numbers = {0,1,2,3,4,5,6,7,8,9,10};
public void traverseReversed(int[] a) {
traverseReversed(a, 0);
}
private void traverseReversed(int[] a, int i) {
if ( i + 1 < a.length ) {
// Traverse the rest of the array first.
traverseReversed(a, i+1);
}
System.out.println(a[i]);
}
public void test() throws Exception {
System.out.println("Hello world!");
traverseReversed(numbers);
}发布于 2017-09-25 15:28:18
如果允许您使用集合,则可以轻松地将其反转。请看下面的代码-
Collections.reverse(Arrays.asList(array))发布于 2017-09-25 16:06:35
不知道面试中的问题是否有一点明智,但这个答案会以某种方式出现。
只需使用~一元位补码运算符即可获得自定义-1:
String[] array = {"aaa","bbb","ccc"};
int minusOne = ~0;// unary bitwise complement, yields -1
for(int i = array.length + minusOne; i >= 0; i = i + minusOne){
System.out.println(array[i]);
}https://stackoverflow.com/questions/46408786
复制相似问题