题目 1214: 恺撒密码

时间限制: 1Sec 内存限制: 128MB

题目描述:(原题链接)

     恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果不知道方法, 没有人可以破解.
     你是恺撒军队的一个上尉. 你的工作是解密消息并将之提供给将军. 密码很简单. 对明文的每个字母右移5个位置以创建密文 (如字母’A’, 密 文是’F’). 有如下对应:
     密文
     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
     明文
     V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

只有字母需要移位, 其它字符保持不变, 所有字母均是大写.


输入:

输入为至多100组数据. 每组数据有如下格式, 中间无空行.
一组数据有3部分:
起始行 - 单独一行: “START”
密文 - 单独一行, 包含1到200个字符, 组成恺撒的消息.
结束行 - 单独一行: “END”
最后一组输入是单独一行: “ENDOFINPUT”.

样例输入:

START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
END
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
END
ENDOFINPUT


输出:

对每组数据有一行输出. 即恺撒的原始消息.

样例输出 :

IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE


解题思路:

     将字母进行固定变化,然后输出

注意事项:

     注意变化的函数

参考代码:

import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
            String start=in.nextLine();
            if(start.equals("ENDOFINPUT")) {
                break;
            }
            else {
                String s =in.nextLine(),tmp="";
                @SuppressWarnings("unused")
                String end=in.nextLine();
                for(int i=0;i<s.length();i++) {
                    if(s.charAt(i)>='A'&&s.charAt(i)<='Z') {
                        tmp =tmp+(char)((s.charAt(i)-'A'+21)%26+'A');   //注意转换
                    }else
                        tmp =tmp+s.charAt(i);
                }
                System.out.println(tmp);
            }
        } 
        in.close();
    }
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值