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

 

 

请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。

程序设计思想:

首先输入一个字符串,然后利用函数将该字符串赋值给一个数组(char类型),然后利用for循环,将数组中的每个字符的ASCLL码+3,当字符为x,y,z,时,单独写出

X->A;

Y->B;

Z->C;

然后再将最后的得到的数组变成字符串输出。

如果是破解密码,则将每个数组中的字符的ASCLL码都-3,对于a,b,c应该单独判断。

A->X;

B->Y;

c->Z;

然后再将其变成字符串输出。

 

程序设计流程图:

程序源代码:

import java.util.Scanner;

public class Password {
public char Change(char a)
{
	char c=0;
	if(a=='X')
		c='A';
	if(a=='Y')
		c='B';
	if(a=='Z')
		c='Z';
	if(a>='A'&&a<='W')
		c=(char) (a+3);
	return c;
		
}

public char jiemi(char a)
{
	char c=0;
	if(a=='A')
		c='X';
	if(a=='B')
		c='Y';
	if(a=='C')
		c='Z';
	if(a>='D'&&a<='Z')
		c=(char) (a-3);
	return c;
		
}

	public static void main(String[] args) 
	{
				String s1;
				String s2="";
				char c;
				int w;
				Scanner input=new Scanner(System.in);
				Password p=new Password();
				System.out.println("请选择1.加密2.解密");
				w=input.nextInt();
		if(w==1)
		{
					System.out.println("请输入一条消息:");
					s1=input.next();
					char a[]=s1.toCharArray();
				for(int i=0;i<a.length;i++)
				{
					if(a[i]<'A'&&a[i]>'Z')
					{
						System.out.println("输入有误");
						System.exit(0);
					}
					c=p.Change(a[i]);
					s2=s2+c;
					
				}
		System.out.println("加密后的消息为:");
		       System.out.println(s2);
		}
		else
		{
			System.out.println("请输入要解密的句子");
			s1=input.next();
			char a[]=s1.toCharArray();
			for(int i=0;i<a.length;i++)
			{

				if(a[i]<'A'&&a[i]>'Z')
				{
					System.out.println("输入有误");
					System.exit(0);
				}
				c=p.jiemi(a[i]);
				s2=s2+c;
			}
			System.out.println("解密后的消息为:");
		       System.out.println(s2);
		}
	}

}

 程序截图: