数字资产的概念被提出来,用于给数字资产加密的业务变得非常火热,现有一套用于给数字资产加密的系统专门用于产生加密密码,请设计一个方法用于给数字密码进行加密。

加密规则如下:根据数字长度的每位数,给每位数+5,再对10求余,最后将所有数字反转,得到的新数,如果是奇数请加上1997,否则就是这个新数。

分析:1.需要输入一个数,判断输入数字的位数

        Scanner s=new Scanner(System.in);System.out.println("输入密码:");int a=s.nextInt();//输入密码int f=a;int count=0;//定义一个计数器,计算位数while (f>=1){//判断位数f=f/10;count++;}System.out.println("有"+count+"位");//位数

 在这里定义了一个 f=a 是因为下面的while循环会对你输入的值a进行计算,如果没有定义这个

f=a 在后面的计算中a的值就为0.

2.对输入的数字取出每一位并进行加五模10计算,并翻转

        int v;int q=10;int sum=0;for (int i = 0; i <count; i++) {//a 1234v=(a%q+5)%10;//对输入的数进行加5模10sum=sum*10+v;//遍历求和得出新的数a=a/10;}System.out.println(sum);

 用v将每次取出的数进行计算后的值保存再用sum进行求和,而且通过这个for循环让计算后的值自动翻转。

3.判断是否为奇数,如果是奇数,就加上1997,否则不变

        if(sum%2!=0){sum=sum+1997;System.out.println("加密后新的值"+sum);}else{System.out.println("加密后新的值"+sum);}

完整代码:

import java.util.Scanner;//需求:加密规则如下:根据数字长度的每位数,给每位数+5,再对10求余,最后将所有数字反转,得到的新数,
// 如果是奇数请加上1997,否则就是这个新数。
public class Test3{public static void main(String[] args) {jiami();}public static void jiami() {Scanner s=new Scanner(System.in);System.out.println("输入密码:");int a=s.nextInt();//输入密码int f=a;int count=0;while (f>=1){//判断位数f=f/10;count++;}System.out.println("有"+count+"位");//位数//int b[]=new int[count];int v;int q=10;int sum=0;for (int i = 0; i <count; i++) {//a 1234v=(a%q+5)%10;//对输入的数进行加5模10sum=sum*10+v;//遍历求和得出新的数a=a/10;}System.out.println(sum);if(sum%2!=0){sum=sum+1997;System.out.println("加密后新的值"+sum);}else{System.out.println("加密后新的值"+sum);}}
}

加密计算结果:

当我们输入的数字最后一个值为5时,我们会发现结果少一位:

但是这并不影响我们,因为我们需要的只有加密,如果客户需要解密,那我们就需要增加一个数组,放在第二步里面,在第三步里面加个判断,如果翻转后的数字的位数小于原数字的位数,并且反转后的值不是偶数那就要加上1997不小于原数的位数,那就输出遍历数组b[],否则就输出sum。

更新后代码如下:

import java.util.Scanner;//需求:加密规则如下:根据数字长度的每位数,给每位数+5,再对10求余,最后将所有数字反转,得到的新数,
// 如果是奇数请加上1997,否则就是这个新数。
public class Test3{public static void main(String[] args) {jiami();}public static void jiami() {Scanner s=new Scanner(System.in);System.out.println("输入密码:");int a=s.nextInt();//输入密码int f=a;int count=0;while (f>=1){//判断位数f=f/10;count++;}System.out.println("有"+count+"位");//位数int b[]=new int[count];int v;int q=10;int sum=0;for (int i = 0; i <count; i++) {//a 1234v=(a%q+5)%10;//对输入的数进行加5模10sum=sum*10+v;//遍历求和得出新的数b[i]=v;a=a/10;}int co=0;int g=sum;int e=1;while (g>=1){//判断位数g=g/10;co++;e=10*e;}if(co<count&&sum%2==0||sum+1997<e){//位数少一位,为奇数,加上1997位数不变System.out.print("加密后新的值:");for (int m:b) {System.out.print(m);}}else if(sum%2!=0&&sum+1997>e){//为偶数,加上1997位数不变sum=sum+1997;System.out.print("加密后新的值:"+sum);}else{System.out.println("加密后新的值"+sum);}}
}

测试输出:

输入翻转加1997后位数不变:

 输入翻转后少一位:

 正常输入:

JAVA 练习题(4)相关推荐

  1. 2016计算机二级java_2016计算机二级JAVA练习题及答案

    2016计算机二级JAVA练习题及答案 21.下列选项中,不能输出100个整数的.是( ). A.for(int i=0;i<100;i++) System.out.println(i); B. ...

  2. 20199计算机二级java答案_计算机二级Java练习题-2019.9

    是不是急于做大量的计算机等级考试题库,却因测试结果不尽人意而心慌不安?不要急!考无忧小编为大家准备了一些二级Java练习题,希望能帮助大家高效复习,轻松通关! 1.下列叙述中正确的是(). A.栈是& ...

  3. 二级计算机java2017级_2017计算机等级二级考试java练习题及答案

    2017计算机等级二级考试java练习题及答案 JAVA是计算机二级考试的科玛之一,你知道计算机二级考试JAVA科目都考哪些知识吗?为了方便考生备考计算机二级考试JAVA 科目.下面是小编为大家带来的 ...

  4. JAVA练习题库/JAVA面试题库

    JAVA练习题库/JAVA面试题库 Day01 - 环境搭建 编程:在源文件 TestHello.java 中定义两个类,要求如下: ① 第一类为公开类:打印输出 "你好,我们是程序员.&q ...

  5. Java练习题12.1

    Java练习题12.1 分别采取递归和循环两种方法编程: 1.输入一个整数n,求n! 方法1: package com.shangjiti.aoian; import java.util.Scanne ...

  6. 新手java练习题100(1-5)

    新手java练习题100(1-5) 1.编程实现:根据以下函数关系,对输入的X值计算输出对应的y值. x的值 对应y的值 x<0 0 0<=x<10 x 10<=x<20 ...

  7. 日常Java练习题(每天进步一点点系列)【含通知】

    提示:好多小伙伴反映,直接看到答案不太好,那我把答案的颜色设置为透明,答案位置还是在题目后面,需要鼠标选中才能看见(操作如下图),同时为了手机端的小伙伴(手机端也可以长按选中查看),我还会把所有答案放 ...

  8. 2021-07-30 Java练习题

    2021-07-30 Java练习题目录: 1.现在有字符串: 2.字符串解析,现有一字符串,"卡巴斯基#杀毒软件#免费版#俄罗斯#",解析出每个元素. 3."那车水马龙 ...

  9. 2019二级java还有吗_2019年下半年二级Java练习题

    世界上没有不劳而获,无论你考什么试,你得一直努力,一直刷二级Java练习题,坚持自己的梦想.记住:"想到"."想得到"."得做到"这一秒不放 ...

  10. 2021-08-05 Java练习题

    2021-08-05 Java练习题目录: 1.一.产生10个1-100的随机数,并放到一个数组中,把数组中大于等于10的数字放到一个list集合中,并打印到控制台. 2.LinkedList使用,已 ...

最新文章

  1. 好想自己做个迷宫呀!
  2. 一位老司机谈谈掏心窝子的话
  3. linux中生成考核用的FAT32文件系统结构样例(一)
  4. python运行一个项目_Django 项目创建到启动(最全最详细的第一个项目)
  5. 0406复利计算5.0--结对
  6. linux怎样用命令提示符,Linux用户必知:一分钟掌握14个常用Linux命令行快捷键
  7. Java中complex怎么被调用_java中存在三种调用机制
  8. gerber文件_Altium Designer 如何输出PCB gerber文件
  9. java.lang.Class解析
  10. M.2接口 通道SATA,PCI-Ex2,PCI-Ex4,B key,M key,BM key,NVMe,AHCI都是什么
  11. P2525 Uim的情人节礼物·其之壱(入门,数学)
  12. 内部基因决定拼购品质,苏宁拼购或将成为行业发展新标杆
  13. Linux下CGroup进行CPU内存等资源控制
  14. ant design vue时间范围(range-picker)自定义时间段范围
  15. 【three.js:语法】光源使用详解2-3(聚光灯 SpotLight、平行光 DirectionLight 、环境光 HemisphereLight、镜头光晕 LensFlare)
  16. python买苹果增强版
  17. 6.案例 - 实现少量线程 处理多个客户端请求
  18. 未曾清贫难成人,不经打击老天真
  19. 鸿蒙系统明年上市巧,华为:智能手表及笔记本电脑将搭载鸿蒙系统 手机明年上市...
  20. H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)

热门文章

  1. Excel VBA-批量导出图片.vba
  2. 关于Solidworks启动和office的VBA干涉解决方法
  3. 百度蜘蛛ip地址大全,百度搜索引擎蜘蛛的IP地址段
  4. 推荐这三款软件让你实现PDF转WORD格式
  5. ICMP增强型snort规则
  6. 借助WinPE进行Windows系统安装
  7. java ssh框架是什么_JAVA SSH框架介绍
  8. 创意的个人简历tab网站模板
  9. 核心参数相近 功能表现不同 联发科MT8389与全志A31s多方位PK
  10. Ubuntu 20.04.2.0 LTS 系统安装过程详解 部署OJ参考