问题的前景:
设计思想:
这个问题主要分为两大块:其一,加密问题:加密就是要将自己想要保护的文件内容进行变化使其不易泄露,在这个问题里的文件内容变化就是要将输入的字符的对应的ASCII进行加三,然后再将它转换为字符串输出即可,在代码的方法体中就要将输入的字符串转化为数组(to.CharArray());然后再将存储字符串的数组进行强制转换转换为整形的数组,最后将整形的数组进行加三的操作,最后再转化为字符数组即可。其二,就是解密问题,解密就是将输入的字符串转换为字符数组,然后字符数组转化为整形的数组,将整形的数组进行减三的操作就行,然后再转化为字符数组进行输出即可。
程序流程图:
源代码:
//凯瑟密码 信1605-3 赵春辉 20163464 import java.util.Scanner; public class Caserkey { int list2[]=new int[10];//定义一个长度为10的整形的数组。 int list4[]=new int[10];// int setkey(String qwe)//创建一个含参的setkey方法 { char list1[]=qwe.toCharArray();//将输入的字符串转化在数组中 for(int i=0;i<list1.length;i++) list2[i]=list1[i];//将char类型的数组转化为int型的数组 for(int i=0;i<list1.length;i++) list1[i]=(char) (list2[i]+3);//将int型的数组进行加密(+3操作); System.out.println(list1);//将加密以后的密文输出出来 return 1; } int getkey(String asd)//创建的有返回值的getkey方法 { char list3[]=asd.toCharArray();//将输入的密文转化为数组存储 for(int i=0;i<list3.length;i++) list4[i]=list3[i];//将char类型的数组转化为int型的数组 for(int i=0;i<list3.length;i++) list3[i]=(char)(list4[i]-3);//将int型数组的密文进行解密操作(-3) System.out.println(list3);//将加密以后的密文输出出来 return 1; } public static void main(String args[]) { Caserkey caser=new Caserkey(); Scanner scanner=new Scanner(System.in); System.out.println("please chose 1(setkey) or chose 0(getkey):"); int chose=scanner.nextInt(); if(chose==1) { System.out.println("enter your setkey"); String string1=scanner.next(); caser.setkey(string1); } else if(chose==0) { System.out.println("pease enter your miwen:"); String string2=scanner.next(); caser.getkey(string2); } else System.out.println("sorry,you input error!"); } }
结果截图: