課後作業:字符串加密
阿新 • • 發佈:2017-10-25
翻譯 return test ext src images 空字符串 get can
古羅馬皇帝凱撒在打仗時曾經使用過以下方法加密軍事情報:
很簡單,就是每個字符原文往後面推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 intlen = 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 }
驗證截圖:
課後作業:字符串加密