用JAVA写“对两个整数变量的值进行互换(不需要第三方变量)”程序

如题所述

JAVA对两个整数变量的值进行互换(不需要第三方变量)的程序如下:

方法一(加减法):

a = a + b;

b = a - b;

a = a - b;

方法二(异或运算):

a = a ^ b;

b = a ^ b;

a = a ^ b;

代码实现如下:

public class Demo {
   public static void main(String [] args){
          int m=2,n=3;
          //method_1(m, n);
          method_2(m, n);     
   }
   /**
    * 使用异或^
    *明白一个数,如果异或同一个数两次,那么就等于本身
    */
private static void method_3(int m, int n) {
        m=m^n;
          n=m^n;
          m=m^n;
          System.out.println("m="+m+"\tn="+n);
}
   /**
    * 使用自身的数组,加减运算
    */
private static void method_2(int m, int n) {
        m=m+n;
           n=m-n;
           m=m-n;
           System.out.println("m="+m+"\tn="+n);
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-14
可以实现的,通过异或运算^
如输入 A,B
A = A ^ B;
b = B ^ A;
A = A ^ B;
即可交换了本回答被网友采纳
第2个回答  2013-07-17
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;

用JAVA写“对两个整数变量的值进行互换(不需要第三方变量)”程序
public class Demo { public static void main(String [] args){ int m=2,n=3; \/\/method_1(m, n); method_2(m, n); } \/** * 使用异或^ *明白一个数,如果异或同一个数两次,那么就等于本身 *\/private static void method_3(int m, int n) { m...

定义两个整数变量并赋值,不使用第三变量的情况下,交换这两个变量的...
a = 3;b = 5;a = a ^ b;b = b ^ a;a = a ^ b;

如何不使用第三个变量来交换两个数的值
即:a^b^b=a。将a=a^b代入b=a^b则得b=a^b^b=a;同理可以得到a=b^a^a=b;轻松完成交换。以上三个算法均实现了不借助其他变量来完成两个变量值的交换,相比较而言算术算法和位算法计算量相当,地址算法中计算较复杂,却可以很轻松的实现大类型(比如自定义的类或结构)的交换,而前两种只能...

java进行两数交换时,如何不用中间量就交换?
方法1:使用^操作来实现 int x = 10;\/\/用二进制表示:x=0b1010;int y = 15;\/\/用二进制表示:x=0b1111;System.out.println("x="+x+" y="+y);x = x^y;\/\/x^y= 0b1010^0b1111 = 0b0101 y = x^y;\/\/x^y= 0b0101^0b1111 = 0b1010 =10 x = x^y;\/\/x^y= 0b01...

...求a丶b各为何值时,a+b的值最小值。 用java语言
一个循环,x*temp=2048(即是y)然后x值不断+1,相除后得出的结果就是temp(一个中间变量),if(y % x == 0)这段是确保了偶数,不会除基数 然后中间变量+x小于 a(本次x+1的值)+ b(本次乘积的令一个值)然后就赋值a = x;b = temp;最后不符合x < y; 了,就退出循环,然后就...

java编程:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序...
import java.util.Scanner;public class DivDemoSp {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(true){try{System.out.println("输入除数");double d1 = Double.parseDouble(sc.nextLine());System.out.println("输入被除数");double d2 = Double....

用java编写一个程序段,输入两个正整数m和n,求其最大公约数和最小公倍...
java.util.Scanner;public class Max_Min { public static void main(String[]args){ Scanner scan = new Scanner(System.in); System.out.print("请输入第一个整数:\\n"); int a = scan.nextInt(); System.out.print("请输入第二个整数:\\n"); int b = scan.nextInt...

编写一个JAVA程序,定义两个整型变量a,b并给它们赋初值,然后找出它们...
import java.util.Scanner;public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入数a和数b"); int a = sc.nextInt(), b = sc.nextInt(); sc.close(); if (a > b) System.out.println(a); ...

用java编写一个max(),接收两个整数,返回两个整数的最大值?
以下是使用 Java 编写一个 max() 方法,它接受两个整数作为参数,并返回它们中的最大值:javaCopy codepublic static int max(int a, int b) { return a > b ? a : b;} 在上面的代码中,我们使用了 Java 中的条件运算符 ? : 来比较两个整数,如果第一个整数 a 大于第二个整数 b...

用java实现 写出一个求两个整数最大值(max)的方法声明
public int MaxNum(Num1,Num2){ if(Num1>Num2){ return Num1;} else { return Num2;} } system.out.println(MaxNum(MaxNum(Num1,Num2),Num3));

相似回答