Java-java反转数组的问题
小弟不才,自己想写个通过算数方法反转数组,没效果T T,不知道是设计思路有问题还是逻辑没搞好,代码如下:
public static void main(String[] args) {
int sum = 0;
int[] arr = new int[5];
int j = arr.length-1 ;
int temp;
Scanner s = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("第" + (i + 1) + "个数字 :");
arr[i] = s.nextInt();
}
System.out.println("n倒叙输出是");
for (int a = 0; a < 5; a++, j--) {
temp = arr[a] + arr[j];
arr[a] = temp - arr[a];
arr[j] = temp - arr[a];
}
for (int b : arr) {
System.out.print(b + "t");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
方法1,
已经有这样的轮子了,直接用类库Commons.Lang处理;
ArrayUtils.reverse(int[] array)
方法2,
for(int i = 0; i < validData.length / 2; i++)
{
int temp = validData[i];
validData[i] = validData[validData.length - i - 1];
validData[validData.length - i - 1] = temp;
}
逻辑有问题,将翻转的循环改为如下:
for (int a = 0; a < arr.length / 2; a++, j--) {
temp = arr[a] + arr[j];
arr[a] = temp - arr[a];
arr[j] = temp - arr[a];
}
也可以通过牺牲空间的方式,new一个新的数组然后逆序复制
int[] newArray = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
newArray[i] = arr[arr.length - 1 -i];
}
arr = newArray;
我用的是栈来实现的。
public class Reverse {
public static void main(String[] args) {
Stack mStack = new Stack();
Scanner s = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("第" + (i + 1) + "个数字 :");
mStack.push(s.nextInt());
}
while(!mStack.empty()){
System.out.println(mStack.pop());
}
}
}