问题:
古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。
设计思想:
输入一个字符串,将字符串每个位置的字符强制转化为int型,将所得到的ascll代码加3,a-z的Ascll码为97-122,如果加3之后超过122则从97开始。
最后将字符串每个位置用+3之后的字符代替。输出加密后的字符串。解密字符串原理同上。
流程图:
源代码:
//翟超科 信1605-3 20163607
import java.util.Scanner;
public class JiamiString
{
public static String s;
static Scanner in=new Scanner(System.in);
public static void jiami()
{
System.out.println("请输入一个字符串:");
s=in.next();
System.out.println("加密后的字符串为:");
for(int i=0;i<s.length();i++)
{
int t=s.charAt(i);
if(t+3>122&&(t+3)<126)
{
t=t-29;
s=s.replace(s.charAt(i),(char)t);
}
if(t==32)
{
s=s.replace(s.charAt(i),' ');
}
else
{
s=s.replace(s.charAt(i),(char)(t+3));
}
}
System.out.println(s);
}
static void jiemi()
{
System.out.println("请输入一个加密的字符串:");
s=in.next();
System.out.println("解密后的字符串为:");
for(int i=0;i<s.length();i++)
{
int t=s.charAt(i);
if(t-3<97)
{
t=t+29;
s=s.replace(s.charAt(i),(char)t);
}
if(t==32)
{
s=s.replace(s.charAt(i),' ');
}
else
{
s=s.replace(s.charAt(i),(char)(t-3));
}
}
System.out.println(s);
}
static void print()
{
System.out.println("欢迎来到字符串解密系统");
System.out.println(" 1、字符串加密");
System.out.println(" 2、字符串解密");
System.out.println(" 3、退出");
System.out.println("请输入相应的操作:");
}
static void run()
{
while(true)
{
print();
int t=in.nextInt();
switch(t)
{
case 1:
jiami();
break;
case 2:
jiemi();
break;
case 3:
System.out.println("退出成功");
System.exit(0);
}
}
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
run();
}
}
程序截图: