黑马程序员技术交流社区

标题: 关于打印数组的一个小问题,弄晕了,大神请进~ [打印本页]

作者: 等27岁那一天    时间: 2013-12-20 23:59
标题: 关于打印数组的一个小问题,弄晕了,大神请进~
  1. class Reve
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] list = {1,2,3,4,5};
  6.                 reverse(list);
  7.                 for (int i = 0; i< list.length;i++)
  8.                
  9.                         System.out.println(list[i]+ " ");
  10.                
  11.                
  12.         }
  13.         public static void reverse(int[] list){
  14.                 int[] newlist = new int[list.length];

  15.                 for (int i = 0;i<list.length ;i++ )
  16.                
  17.                         newList[i] = list[list.length - 1 - i];
  18.                        
  19.                
  20.                 list = newList;
  21.         }
  22. }
复制代码

下面这个方法不知道起到了什么作用,有木有它,输出结果都一样~~~
作者: yuehaotian    时间: 2013-12-21 00:19
哥们,你的反转方法是无返回值的。你最后的赋值行为,其实原来数组并没有收到,所以没变化

你应该吧方法的返回值设成 int []  然后让  list = reverse(list);  这样就行了
作者: 一年之后    时间: 2013-12-21 00:20
下面的是一个反转功能,你好像没写对。
你把newlist返回去,用list接收一下。
你现在输出的 1.2.3.4.5
调用reverse()方法
就会打出5.4.3.2.1
作者: 赵晓海    时间: 2013-12-21 00:38
本帖最后由 赵晓海 于 2013-12-21 00:50 编辑

public static void reverse(int[] list)------这一句里面的"int[] list"相当于重新new了一个list数组对象(可以称作参数list)。

这个参数list对象和main方法中的list完全是两个对象。
reverse中最后的赋值语句只是把newList的地址赋值给参数list,但是main方法中的list并没有变化。

该怎么修改楼上已经给出方法,我就不赘述了。
作者: 等27岁那一天    时间: 2013-12-21 02:26
赵晓海 发表于 2013-12-21 00:38
public static void reverse(int[] list)------这一句里面的"int[] list"相当于重新new了一个list数组对象 ...

恩恩,恍然大悟,谢谢大家了:lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2