为了账号安全,请及时绑定邮箱和手机立即绑定

下面的程序哪里错了,请问

下面的程序哪里错了,请问

地方去 2016-09-18 19:34:43
 int [] array = new int []{1,3,-1,5,-2};  int [] newArray = new int []{array.length};  System.out.println("原数组为:");  for (int i = 0; i < array.length; i++) {   System.out.println(array[i]+"");     }  for (int i = array.length-1; i>= 0; i--) {   if (array[i]<0) {    continue;       }   newArray[array.length-i-1] = array[i];  }  System.out.println("倒序后的新数组为:");  for (int i = 0; i < newArray.length; i++) {    System.out.println(newArray[i]+"");      }
查看完整描述

2 回答

已采纳
?
阿旭_

TA贡献217条经验 获得超353个赞

新数组的长度设置的不正确

int[] newArray = new int[] { array.length };//这里表示新数组的长度只有1,并且里面的值为5
int[] newArray = new int[array.length];//长度要写到方括号内

你的需求是倒序输出吗?为什么要加判断是否小于0呢?

   if (array[i]<0) {//个人觉得没必要啊,可以去掉,不然最终的结果数组里有些值还是0
    continue;
    
   }

精简代码后结果

import java.util.Arrays;

public class Test32 {
	public static void main(String[] args) {
		int[] array = new int[] { 1, 3, -1, 5, -2 };
		System.out.println("原数组:"+Arrays.toString(array));
		for (int i = 0; i < array.length/2; i++) {
			array[i] = array[i]^array[array.length-i-1];
			array[array.length-i-1] = array[i]^array[array.length-i-1];
			array[i] = array[i]^array[array.length-i-1];
		}
		System.out.println("倒序后:"+Arrays.toString(array));
	}
}

//img1.sycdn.imooc.com//57de828b0001378403780134.jpg

查看完整回答
1 反对 回复 2016-09-18
?
Crafon

TA贡献63条经验 获得超30个赞

int [] newArray = new int []{array.length};

这句错了,你想声明一个大小是array.length的newArray,但是你这里只是声明了一个只包含一个元素的数组。

应该是int [] newArray = new int[array.length];

实测正确。望采纳


查看完整回答
1 反对 回复 2016-09-18
  • 2 回答
  • 0 关注
  • 1378 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信