A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huizhong 中级黑马   /  2016-7-3 22:33  /  937 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huizhong 于 2016-7-3 23:16 编辑

class LianXi003 {
public static void main(String[] args) {
  int[] arr = {1,2,3,4,5,6};
  int first = arr[0];    //数组第一个元素
  int end = arr[arr.length-1]; //数组最后一个元素
  
  //交换
  int temp = 0;  
  temp = first;
  first=end;
  end = temp;

  print(arr);  //遍历

}
/*
数组的遍历
返回值类型void
参数类型 inti
*/
public static void print(int[] arr) {
  for (int i = 0;i < arr.length ;i ++ ) {
   System.out.print(arr+" ");
  }
}
}
我想问一下红字部分的交换不成功是为什么

10 个回复

倒序浏览
没看出红字有问题啊  数组遍历输出应该是arr【i】吧?
回复 使用道具 举报
张雨 发表于 2016-7-3 22:41
没看出红字有问题啊  数组遍历输出应该是arr【i】吧?

谢谢朋友的指点,
红字部分是我写的数组的交换
但是不会交换
好像数组的交换要交换元素的索引
回复 使用道具 举报
已经get!
回复 使用道具 举报
交换不成功问题在于,你没有对数组中的数据进行操作,你红色的部分交换的仅仅是first 和 end两个变量的值,其实,原来first和end两个变量所指向的是数组中第一个数和最后一个数,但你要是这么交换的话,first和end所指向的就不是数组中的数了,要想交换成功 需要改成 int temp = 0; temp = arr[0];arr[0] = arr[arr.length-1];
arr[arr.length-1] = temp;即可,而不是用他们的引用变量first和end操作。
回复 使用道具 举报
数组交换是数组里面的元素和元素进行交换,不是值跟元素交换。如果是值跟元素交换 会改变数组在堆中的值
回复 使用道具 举报
用for循环控制对调次数..红色部分只做了一次对调动作.
回复 使用道具 举报
15820030540 发表于 2016-7-3 23:34
交换不成功问题在于,你没有对数组中的数据进行操作,你红色的部分交换的仅仅是first 和 end两个变量的值, ...

这位同学说的在理,我觉得我的这个错误可以出个题了 哈哈哈哈哈哈哈
回复 使用道具 举报
涨知识了耶 也是我想了解的
回复 使用道具 举报
学习到了
回复 使用道具 举报
变量值交换了,数组元素没交换
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马