1.题目要求:
请编写一个程序,使用上述算法加密或解密用户输入的英文字串
(1)设计思路:
加密::输入一段字符串和字符移动数n,将A~(Z-n)直接向后移动,(Z-n)~Z向前移动后减26即可
解密:将(A-n)~Z直接向前移动,A~(A-n)向前移动后加26即可
(2)程序流程图:
源代码:
import java.util.Scanner; public class mima { private String mim; void jiemi(int jiemi)//解密 { int i=0; int length = mim.length(); char []zi = new char[length]; for(;i<length;i++) { zi[i]=mim.charAt(i); } for(i=0;i<length;i++) { if(zi[i]>=('A'+jiemi)&&zi[i]<='Z')zi[i]=(char) (zi[i]-jiemi); else if(zi[i]>=('a'+jiemi)&&zi[i]<='z')zi[i]=(char) (zi[i]-jiemi); else if(zi[i]<('A'+jiemi)&&zi[i]>='A')zi[i]=(char)(zi[i]+26-jiemi); else if(zi[i]<('a'+jiemi)&&zi[i]>='a')zi[i]=(char)(zi[i]+26-jiemi); } System.out.print("解密后:"); for(i=0;i<length;i++) { System.out.print(zi[i]); } System.out.println(); } void jiami(int jiami)//加密 { int i=0; int length = mim.length(); char []zi = new char[length]; for(;i<length;i++) { zi[i]=mim.charAt(i); } for(i=0;i<length;i++) { if(zi[i]>='A'&&zi[i]<=('Z'-jiami))zi[i]=(char) (zi[i]+jiami); else if(zi[i]>='a'&&zi[i]<=('z'-jiami))zi[i]=(char) (zi[i]+jiami); else if(zi[i]<('Z'-jiami)&&zi[i]>='Z')zi[i]=(char)(zi[i]-26-jiami); else if(zi[i]<('z'-jiami)&&zi[i]>='z')zi[i]=(char)(zi[i]-26-jiami); } System.out.print("加密后:"); for(i=0;i<length;i++) { System.out.print(zi[i]); } System.out.println(); mim=String.valueOf(zi); } void setStr(String a) { this.mim =a; } public static void main(String[] args) { // TODO Auto-generated method stub String a; int n; mima m = new mima(); System.out.println("请输入字符串和加密数:"); Scanner sc = new Scanner(System.in); a=sc.nextLine(); n=sc.nextInt(); m.setStr(a); m.jiami(n); m.jiemi(n); } }
结果截图: