如何反转数组? [复制]
Posted
技术标签:
【中文标题】如何反转数组? [复制]【英文标题】:How to reverse an array ? [duplicate] 【发布时间】:2013-01-11 07:17:30 【问题描述】:我需要反转一个数组,例如将点 5 中的内容移动到 0、4 到 1、3 到 2。
int size, length;
System.out.print("how big of a list do you have: ");
size=reader.nextInt();
length=size-1;
int [] array = new int [size];
for (int count=0; count < array.length; count ++)
System.out.println("enter a number: ");
array [count] = reader.nextInt();
for (int count=length; count > 0; count --)
array [(length-count)];
我在 Eclipse 中执行此操作,并且在最后一行中不断收到错误消息,说我没有使用运算符/表达式:array [(length-count)];
但我不知道为什么减号不起作用?或者如果我的程序可以正常运行,它并没有通过构建部分。
【问题讨论】:
【参考方案1】:int temp = 0;
for (int i = 0; i < array.length / 2; i++)
int temp = array[i];
array[i] = array[array.length - i--];
array[array.length - i--] = temp;
temp
用于避免数字相互覆盖。把它想象成从冰箱里取食物。牛奶在水后面,你想要一些牛奶。为了得到牛奶,你把水拿在手里(temp
就是手)。然后你把牛奶放在水所在的地方,水放在牛奶所在的地方。没有“手”,你就会失去水(掉在地板上,或者在 temp
的情况下,失去记忆),只剩下牛奶。
【讨论】:
感谢这行得通,但如果不是太多,请问有人可以解释这是如何工作的,以及 temp 的具体作用。【参考方案2】:Array[(length-count)] 不起作用,因为它是一个值,和写一样
0;
这不是对过程或操作的调用,因此是错误。
试试这个:
int temp = 0 ;
for(int start=0, end = numbers.length -1 ; start < end; start++, end--)
//swap numbers
temp = array[start];
array[start] = array[end];
array[end] = temp;
【讨论】:
以上是关于如何反转数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章