Java实现数字密码发生器
在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了…
这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。
变换的过程如下:
第一步. 把字符串6个一组折叠起来,比如wangximing则变为:
wangxi
ming
第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:
228 202 220 206 120 105
第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。例如: 228 => 2+2+8=12 => 1+2=3
上面的数字缩位后变为:344836, 这就是程序最终的输出结果!
要求程序从标准输入接收数据,在标准输出上输出结果。
输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行字符串,就是等待变换的字符串。
输出格式为:n行变换后的6位密码。
例如,输入:
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
则输出:
772243
344836
297332
716652
875843
注意:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
import java.util.ArrayList;
import java.util.Scanner;public class Main {public static ArrayList<String> list = new ArrayList<String>();public String getResult(String s) {int[] A = new int[6];for(int i = 0;i < s.length();i++)A[i % 6] = A[i % 6] + s.charAt(i);for(int i = 0;i < 6;i++) {while(A[i] >= 10) {String temp = "" + A[i];int a = 0;for(int j = 0;j < temp.length();j++)a = a + (temp.charAt(j) - '0');A[i] = a;}}StringBuffer t = new StringBuffer("");for(int i = 0;i < 6;i++)t.append(A[i]);return t.toString();}public static void main(String[] args) {Main test = new Main();Scanner in = new Scanner(System.in);int n = in.nextInt();for(int i = 0;i < n;i++) {String s = in.next();list.add(test.getResult(s));}for(int i = 0;i < n;i++)System.out.println(list.get(i));}
}
Java实现数字密码发生器相关推荐
- java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合
java正则校验密码必须是包含大小写字母.数字.特殊符号的8位以上四种组合 或者 其中任意三种组合 一.排除法和详细解释 1.排除大写字母.小写字母.数字.特殊符号中1种组合.2种组合.3种组合,那么 ...
- (java)密码加密。某系统的数字密码,比如1983,采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数。
package com.ag.practice;import java.util.Scanner;public class jiami { //某系统的数字密码,比如1983,采用加密方式进行传输,规 ...
- java数字密码字典生成器
直接上代码,如有不足请指出 import java.io.*;/*** 描述:*java代码实现的字典生成器,新手写的,有不足之处可以指出*写个main()调用即可,create方法的参数为文件存储的 ...
- java绕过加密密码_Java实现简单密码加密功能
本文实例为大家分享了Java实现简单密码加密案例,供大家参考,具体内容如下 需求: 首先将一组数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字, 最后将第一位和最后一位数字交换. 请任 ...
- java正则校验密码
java正则校验密码必须是包含大小写字母.数字.特殊符号的8位以上四种组合 或者 其中任意三种组合 一.排除法和详细解释 1.排除大写字母.小写字母.数字.特殊符号中1种组合.2种组合.3种组合,那么 ...
- Java制作数字加减法验证码
Java制作数字加法验证码 简介 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Hu ...
- java修改用户密码全代码
java实现修改密码 前段时间一直在写东西,本来不想把用户这块的东西放出来,想了想,还是弄一个修改密码功能实现一下,首先介绍一下我这个项目,他有session等验证,所以搞起来得和正式的项目一样得实现 ...
- 安全篇之手机数字密码九宫格究竟哪个更安全?
手机解锁经过多年发展已经是五花八门,密码解锁.图案解锁.指纹解锁各种各样的解锁方式.在功能机时代很多手机默认设置PIN码,每次开机都要输入PIN码才能进入手机界面,这是最早形式的手机解锁方式. 但在触 ...
- 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储
1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...
最新文章
- 转 常见hash算法的原理
- Solo 博客系统 1.7.0 发布 - 新版 MD 编辑器
- Redis-11使用 watch 命令监控事务
- 阿里P7架构师详解微服务链路追踪原理
- Ehcache学习笔记(一)基础入门
- 蓝桥杯 BASIC-1 基础练习 闰年判断
- [转载] python中pprint模块详解——print()和pprint()两者的区别
- 统计学 贾俊平 笔记
- 上瘾啦,又用 Python 制作销售数据可视化看板
- ubuntu10.10下安装五笔86输入法
- 交换机级联,堆叠,集群技术介绍
- 蓝桥杯练习题--Fibonacci数列
- 非科班基础知识三座大山:网络,操作系统,数据库
- 【Unity2D】关卡编辑好帮手——TileMap
- 云通讯这局棋,声网、容联云怎么破?
- mocc javascript
- Ubuntu16.04深度学习环境搭建
- HTTP状态码:400\500 错误代码(个人总结)
- 协方差矩阵的几何解释
- mosquitto入门教程
热门文章
- 蓝桥杯算法训练——逗志凡的危机——动态规划+递归
- 如何网络推广_seo研究中心
- 撼龙图怎么开鸿蒙炁灵,一人之下手游鬼灵宝藏怎么玩_一人之下手游鬼灵宝藏玩法攻略_玩游戏网...
- MCMC详解1——蒙特卡洛方法
- 利用lammps软件计算硅的平衡晶格常数和体弹模量
- ImageMagick:png序列转gif(适合处理带透明度的图片)
- Vue实现简单实用的 6 位验证码输入框
- 与Flash Player斗智斗勇的全过程
- css3新增动画属性(过度动画 变形动画 关键帧动画)
- C语言:数字三角形!