当前位置: 首页 > news >正文

Java练习6

一.题目

数字加密与解密
需求:
某系统的数字密码(大于 0),比如 1983,采用加密方式进行传输。
规则如下:
先得到每位数,然后每位数都加上 5,再对 10 求余,最后将所有数字反转,得到一串新数。

二.源码

1.加密

package TestRuMen;public class Test6
{public static void main(String[] args){// 定义一个整数数组,存储原始数字的每一位,这里的 1983 被拆分为 {1, 9, 8, 3}int[] arr={1,9,8,3};// 遍历数组,对每个元素执行加密的第一步和第二步:加 5 并对 10 求余for (int i = 0; i < arr.length; i++){// 将当前元素加 5 后对 10 求余,更新数组元素的值arr[i]=(arr[i]+5)%10;}// 使用双指针法反转数组元素,实现加密的第三步for (int i = 0, j = arr.length-1; i<j;i++,j--){// 借助临时变量 temp 交换 arr[i] 和 arr[j] 的值int temp=arr[i];arr[i]=arr[j];arr[j]=temp;}// 定义一个整数变量,用于存储将数组元素组合后的加密数字int number=0;// 遍历数组,将数组中的数字组合成一个整数for (int i = 0; i < arr.length; i++){// 通过乘以 10 并加上当前元素,将数组元素组合成一个整数number=number*10+arr[i];}// 打印加密后的数字System.out.println(number);}
}

2.把整数的每一位都添加到数组当中

package TestRuMen;public class Test7
{public static void main(String[] args){// 定义一个整数变量,初始值为 12345,这是需要处理的数字int number=12345;// 定义一个临时变量,用于存储原始数字,避免在后续操作中修改原始数字int temp=number;// 定义一个计数器,用于记录数字的位数int count=0;// 循环计算数字的位数,当数字不为 0 时继续循环while(number!=0){// 将数字除以 10,去掉最低位number=number/10;// 计数器加 1count++;}// 根据计算得到的数字位数,创建一个对应长度的整数数组int[] arr=new int[count];// 定义数组的索引,初始值为数组的最后一个位置int index=arr.length-1;// 循环将数字的每一位提取出来,存储到数组中while(temp!=0){// 获取数字的最低位int ge=temp%10;// 将数字除以 10,去掉最低位temp=temp/10;// 将最低位数字存储到数组的当前索引位置arr[index]=ge;// 索引减 1,指向前一个位置index--;}// 遍历数组,打印数组中的每一个元素for (int i = 0; i < arr.length; i++){System.out.print(arr[i]+" ");}}
}

3.解密

package TestRuMen;public class Test8
{public static void main(String[] args){// 定义一个整数数组,存储加密后的数字密码,这里的 8346 是加密后的结果int[] arr={8,3,4,6};// 第一步:反转数组元素,还原加密时数字反转的操作// 使用双指针法,i 从数组头部开始,j 从数组尾部开始for (int i = 0, j = arr.length - 1; i < j; i++, j--){// 借助临时变量 temp 交换 arr[i] 和 arr[j] 的值int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}// 第二步:还原对 10 求余的操作// 遍历数组,对于 0 到 4 之间的元素,加上 10 以还原求余前的数值for (int i = 0; i < arr.length; i++){if (arr[i] >= 0 && arr[i] <= 4){arr[i] = arr[i] + 10;}}// 第三步:减去 5,还原每位数加上 5 的操作for (int i = 0; i < arr.length; i++){arr[i] = arr[i] - 5;}// 第四步:将数组中的数字组合成一个整数int number = 0;for (int i = 0; i < arr.length; i++){// 通过乘以 10 并加上当前元素,将数组元素组合成一个整数number = number * 10 + arr[i];}// 打印解密后的数字密码System.out.println(number);}
}

http://www.xdnf.cn/news/206965.html

相关文章:

  • Linux 内核中 TCP 协议的支撑解析
  • 云蝠智能大模型智能呼叫:赋能零售行业服务,助力客户增长
  • 基于PyTorch的Fashion-MNIST图像分类数据集处理与可视化
  • Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用---后台调用Python Matplotlib绘制图形
  • 【计算机架构】CISC(复杂指令集计算机)架构
  • 移远通信LG69T赋能零跑B10:高精度定位护航,共赴汽车智联未来
  • flink cdc 配置
  • 1.5 城镇道路工程安全质量控制
  • Go 1.25为什么要废除核心类型
  • Educational Codeforces Round 178 div2(题解ABCDE)
  • 简化excel校验提高开发效率
  • 精益数据分析(31/126):电商关键指标深度解析与实战策略
  • 51LA使用方法与悟空统计,网站数据分析的双重选择
  • Twitter 工作原理|架构解析|社交APP逻辑
  • 微信小程序封装选择年月日时分秒组件
  • “兴火·燎原”总冠军诞生,云宏信息《金融高算力轻量云平台》登顶
  • uni-app 中封装全局音频播放器
  • 无人机航拍牛只检测数据集VOC+YOLO格式906张1类别
  • Codigger Desktop:重新定义数字工作与生活方式
  • 8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)
  • 如何解决 Xcode 签名证书和 Provisioning Profile 过期问题
  • Linux系统基础:基础指令简介(网络概念部分)
  • AtCoder Beginner Contest 403(题解ABCDEF)
  • PLOT: PROMPT LEARNING WITH OPTIMAL TRANSPORT FOR VISION -LANGUAGE MODELS
  • Vue使用Sortablejs拖拽排序 视图显示与数据不一致、拖拽结束后回跳问题
  • 4.27搭建用户界面
  • PostgreSQL数据库批量删除唯一索引
  • 【AI】OrinNX上安装RIVA-2.19.0,实现文本转语音
  • Spring Boot 集成 ActiveMQ 实现异步消息通信(二)
  • Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读