课后作业:字符串加密
古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
很简单,就是每个字符原文往后面推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<len;++i) { 25 if(original.charAt(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<len;++i) { 47 if(str.charAt(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<len;++i) { 67 if(str.charAt(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 }
验证截图: