古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
很简单,就是每个字符原文往后面推3个字符就是对应密码
程序设计思想:编写一个类,在主线程中调用这个类的静态方法,这两个静态方法接受字符串,一个翻译原文,另一个翻译密码。具体实现非常简单,利用循环对字符串中每个字符作+3的操作(这里需要用到强制类型转换,对于字母表结尾的xyz和开头的abc分别在转为密码和转为原文中特殊处理,即a---x,b---y,c---z),同时把这些字符加到一个准备输出的空字符串的后面
程序流程图:
程序源代码:
1 import java.util.Scanner; 2 3 public class Test3 { 4 public static void main(String[]args) { 5 Scanner s = new Scanner(System.in); 6 System.out.print("输入一串原始字符串:"); 7 String str = s.next(); 8 System.out.println("对应密码为:"+Psw.lock(str)); 9 System.out.print("输入一串密码字符串:");10 str = s.next();11 System.out.println("对应原文为:"+Psw.unlock(str));12 s.close();13 }14 }15 16 class Psw{17 private String original = "";18 private String psw = "";19 public Psw(String original) {20 this.original = original;21 }22 public void lock() {23 int len = original.length();24 for(int i = 0;i='a'&&original.charAt(i)<='w')26 psw+=(char)(original.charAt(i)+3);27 else if(original.charAt(i)=='x')psw+='a';28 else if(original.charAt(i)=='y')psw+='b';29 else if(original.charAt(i)=='z')psw+='c';30 else if(original.charAt(i)>='A'&&original.charAt(i)<='W')psw+=(char)(original.charAt(i)+3);31 else if(original.charAt(i)=='X')psw+='A';32 else if(original.charAt(i)=='Y')psw+='B';33 else if(original.charAt(i)=='Z')psw+='C';34 else {35 System.out.println("有异常字符,直接退出");36 break;37 }38 }39 }40 public String getPsw() {41 return psw;42 }43 public static String lock(String str) {44 String str1 = "";45 int len = str.length();46 for(int i = 0;i ='a'&&str.charAt(i)<='w')48 str1+=(char)(str.charAt(i)+3);49 else if(str.charAt(i)=='x')str1+='a';50 else if(str.charAt(i)=='y')str1+='b';51 else if(str.charAt(i)=='z')str1+='c';52 else if(str.charAt(i)>='A'&&str.charAt(i)<='W')str1+=(char)(str.charAt(i)+3);53 else if(str.charAt(i)=='X')str1+='A';54 else if(str.charAt(i)=='Y')str1+='B';55 else if(str.charAt(i)=='Z')str1+='C';56 else {57 System.out.println("有异常字符,直接退出");58 break;59 }60 }61 return str1;62 }63 public static String unlock(String str) {64 String str1 = "";65 int len = str.length();66 for(int i = 0;i ='d'&&str.charAt(i)<='z')68 str1+=(char)(str.charAt(i)-3);69 else if(str.charAt(i)=='a')str1+='x';70 else if(str.charAt(i)=='b')str1+='y';71 else if(str.charAt(i)=='c')str1+='z';72 else if(str.charAt(i)>='D'&&str.charAt(i)<='Z')str1+=(char)(str.charAt(i)-3);73 else if(str.charAt(i)=='A')str1+='X';74 else if(str.charAt(i)=='B')str1+='Y';75 else if(str.charAt(i)=='C')str1+='Z';76 else {77 System.out.println("有异常字符,直接退出");78 break;79 }80 }81 return str1;82 }83 }
验证截图: