黑马程序员技术交流社区

标题: 菜鸟求救运算符 [打印本页]

作者: 严海燕    时间: 2013-4-5 18:13
标题: 菜鸟求救运算符
本帖最后由 严海燕 于 2013-4-5 20:58 编辑

按照毕老师的视频我打印出来的为什么有问题,请高手们帮我看看??
//对两个整数变量的值进行互换(不需要第三方变量)
class Demo3
{
public static void main(String[] args);
  int n=3,m=8;
        n  = n^m;
       m = n^m;//(n^m)^m
       m  = n^m;//n^(n^m)

{
  System.out.println("n="+n+",m="+m);
   }
  }

未命名.jpg (20.48 KB, 下载次数: 10)

未命名.jpg

作者: 随便    时间: 2013-4-5 18:25
本帖最后由 邓宫财 于 2013-4-5 18:27 编辑
  1.         int n = 3,m = 8;
  2.         n = n^m;
  3.         m = n^m;
  4.         n = m^n;//这一步你弄错了。
  5.         
  6.         System.out.println(n +" "+ m);
复制代码
其实这个结果并不是很重要,重要的是你要了解。^异或的运算方法。

n = 3 0011
m = 8 1000
n = n^m 1011
m = n^m 0011
n = m ^ n 1000

异或的原理就是不同有一个1才是1
就是同一个数,异或另一个数两次之后就变回来了。
作者: 范龙波    时间: 2013-4-5 18:41
本帖最后由 范龙波 于 2013-4-5 18:43 编辑

public static void main(String[] args);    //把那个分号去掉
  int n=3,m=8;                                 //前面少个大括号  {int n=3,m=8;
        n  = n^m;
       m = n^m;//(n^m)^m
       m  = n^m;//n^(n^m)                      //这行的第一个m应该是n吧。 n=n^m

{                                                           //把这个大括号去掉。
  System.out.println("n="+n+",m="+m);
   }
作者: 黄玉昆    时间: 2013-4-5 20:13
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
作者: 杨成    时间: 2013-4-5 20:55
  1. class Demo3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int n=3,m=8;
  6.                 System.out.println("交换前:n="+n+"\tm="+m);

  7.         n  = n^m;
  8.         m  = n^m;//(n^m)^m
  9.         n  = n^m;//n^(n^m)

  10.                 System.out.println("交换后:n="+n+"\tm="+m);
  11.         }
  12.    
  13. }
复制代码
运行结果:

test.png (8.19 KB, 下载次数: 16)

test.png

作者: 刘林虎    时间: 2013-4-5 22:33
public static void main(String[] args){   
  int n=3,m=8;                                 
        n  = n^m;
       m = n^m;//(n^m)^m
       n  = m^n;//n^(n^m)                     
  System.out.println("n="+n+",m="+m);
   }
你应该注意格式的书写 熟悉^ 和//的应用




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