Java消息加密问题


题目描述

NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提
供给你的将军。

消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第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

eg:

输入:
HELLO WORLD
SNHJ

输出:
CZGGJ RJMGY
NICE


以下是本篇文章正文内容,下面案例可供参考

解题思路

遍历每个字符,再转化为原文字符

字符转换操作:
int 和 char可以相互转化
eg:
(int)‘A’ —> 65
(char) 68 —> D

两个大写字母相减,一定等于转换为int后相减
‘A’ + 2 = ‘C’
‘D’ + 3 = ‘F’

相加后的值,不能超出Z的值

构造要转化的字符串(String Builder), 遍历字符串,获取每个字符的位置,如果是空格,直接拼接

若为字符,在E之后,-5;其余+21

密码字母: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

前五个即为原文字母=密码字母+21,其余为密码字母-5
为了防止加到Z之后,超出

代码如下

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            String str = sc.nextLine();
            StringBuilder s = new StringBuilder();
            for(int i = 0;i<str.length();i++) {
                char ch = str.charAt(i);
                if(ch==' '){
                    s.append(" ");
                }else{
                    s.append((char)(ch>'E'?ch-5:ch+21));
                }
            }
            System.out.println(s);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java课程设计题目 一、课程设计总体要求: 本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回 顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用 到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JA V A的应用系统综合实例,来掌握Java语言编程技巧。 二、参考题目及要求: 1、编写一个记事本程序 要求: 用图形用户界面实现。 能实现编辑、保存、另存为、查找替换等功能。 提示:使用文件输入输出流。 2、模拟马匹赛跑 要求: 用图形用户界面实现。 能设置比赛时间,马匹的数量等等。 在任意时间段内马匹的速度是随机的。 开始比赛之后以动画显示赛马过程。 提示:使用多线程 3、学生信息管理系统 要求: 使用图形用户界面 用数据库建立1或2个学生信息表。(不限使用哪种数据库 能连接数据库并实现查询、增、删、改等功能。 4、图书信息管理系统 要求: 使用图形用户界面 用数据库建立1或2个图书信息表。(不限使用哪种数据库 能连接数据库并实现查询、增、删、改等功能。 5、聊天小程序 要求: 使用图形用户界面。 能实现一个聊天室中多人聊天。 可以两人私聊。 提示:使用socket通信 6、ATM柜员机模拟程序 要求:使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456时,系 统能登录ATM柜员机系统,用户可以按照以下规则进行: 1、查询余额:初始余额为10000元 2、A TM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 3、A TM存款:不能出现负存款。 4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确 ,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 7、超市收银系统 要求:使用图形用户界面。 由收银员输入顾客的会员卡卡号(若有卡、所购商品的货号等。从数据库中取出有关 价格信息,再把这些信息返回给收银台。同时把该收银台的销售总量和有关种类商品的剩 余量以及该持卡顾客的消费情况交数据库存储以供查询。 另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。如果一个未持卡顾 客一次购物满200元,可为其发放一张会员卡,以后在该商场购物可向9折优惠。 8、万年历 要求: 使用图形用户界面。 实现日期与星期的查询 9、网络监听程序 要求: 使用图形用户界面。 有服务器和客户端,服务器监听客户端的登陆。即:如果A客户端登陆服务器,则服务器 界面上的A字母对应的红灯变成绿色。 绿灯表示连接,红灯表示断线。 提示:socket的监听方法 10、全球通计费程序 要求: 使用图形用户界面。 使用真实的全球通资费标准,模拟统计一个特定号码的一个月的实时话费。 能根据输入实现各种用户的话费的计算并显示月实时帐单。 提示:使用接口和多个子类实现分别表示金卡、银卡等各种套餐的话费计算。 11.日历记事本 要求:带有日程提醒功能的日历。 1、显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月 的日期。 2、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统 时间和提醒时间相吻合时,给出具有提示信息的对话框。 3、查询信息:用户可以查询到某个月的所有的提示信息。 12.电子英汉词典 要求: 能够编辑词典库中的信息 能够实现英译汉,汉译英。(要考虑一词多义 13.加密与解密 要求:采用图形用户界面 1、给定任意一个文本文件,进行加密,生成另一个文件。 2、对加密后的文件还原。 14.小游戏 要求:。 程序随机产生20—50根火柴,由人与计算机轮流拿,每次拿的数量不超过3根,拿到最后 一根为胜。(使用图形界面 15.敏感词汇分析 要求: 任意选择一个文本文件,分析该文件,如果存在敏感词汇(这些词汇保存在sentive.tx t文件中,每个词占一行,报告每个词出现的次数。 16、猜数字游戏 要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到, 给出所用时间和评语。 要求提交Application和Applet两个版本的程序。 17、小学算术运算测试程序 要求:制作一个可供小学数学运算程序:10以内加减法,能根据输入题数出题,判断做题 是否正确,最后计算分数。 要求提交Application和Applet两个版本的程序。 18、模拟科学计算器 要求:界面模拟Windows中的计算器程序。 实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。 实现要点:添加相关组件并进行按钮事件处理。 要求提交Application和Applet两个版本的程序。 19、模拟画图 要求:模拟Windows中的画图程序,实现图形图像

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值