课后作业:字符串加密

古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:

很简单,就是每个字符原文往后面推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 }

验证截图:

posted @ 2017-10-25 16:58  messi2017  阅读(290)  评论(0编辑  收藏  举报