代码如下:
package test;
import java.util.Scanner;
/*
*@author xpengfei
*@version
*创建时间:May 10, 2017 5:21:06 PM
*/
/*
*类信息:不借助第三个变量,实现两个变量之间的互换
*/
public class ch_17 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入变量A的值:");
long A=scan.nextLong();
System.out.println("请输入B的值:");
long B=scan.nextLong();
System.out.println("A="+A+" B="+B);
System.out.println("-----:实现变量互换:-----");
A=A^B;
B=B^A;
A=A^B;
System.out.println("A="+A+" B="+B);
}
}
主要是通过异或实现,类比于通过异或符号实现简单的加密功能
第一行的A=A^B 即是将A^B后的一串编码赋值给A以便下面实现A与B得互换;
B=B^A 通过此行代码实现将A得原有值赋给B
A=A^B 将B得原有值赋给A
至此A与B之间已实现互换。
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个英文字符串或解密字符串:");
String passwd=scan.nextLine();
char[]array=passwd.toCharArray();
for(int i=0;i<array.length;i++){
array[i]=(char)(array[i]^20000);
}
System.out.println("加密或解密后的结果如下:");
System.err.println(new String(array));
代码中的最后一行System.err.println(new String(array));是通过err函数手动输出错误信息。
将结果以错误信息形式输出,更加醒目。