这个练习的要求是用户输入数字密码,比如1980等等,然后进行对原密码的加密。
加密规则为:
先获取密码的每一个数,然后每一位数都加上5,再对10求余,最后将所有数反转(前后调换),得到一串新数;
然后我把实现的过程分成几步:
1.从键盘输入,并创建一个int变量来存这些密码,并且还有获取这个密码的位数。
2.单独获取密码的每一位,并将其反着的存在一个数组中,这个数组的长度为密码的位数。
3.遍历数组里的每一个数,并对这些数进行加密,将这些加密后的数存在一个新的数组里,新数组的长度也是原密码的位数。
4.遍历新数组,输出加密后的密码。
然后我就实现了。
package Test;
import java.util.Scanner;
public class Shuzijiami {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入密码:"); //定义一个int变量存输入进来的密码
int Mima=sc.nextInt();
int weishu=0;
for (int i=1;i>0;i=i*10){ //这个循环的作用是得到密码的位数,方便我下面创建数组存储每一位数时
//能够知道创建的数组的长度是多少
if (Mima/i<1){ //如果小于1了,就可以跳出循环了。
break;
}
weishu++;
}
int[]arr=new int[weishu]; //依照上面得到的位数,创建相应长度的数组
int chu=1;
int ji=0;
for (int j = 0; j < arr.length; j++) {
arr[j]=Mima/chu%10; //从个位开始,获取密码的每一位数,这个过程中已完成了原密码的颠倒了
chu=chu*10;
ji++;
}
int []arr1=new int[weishu];
for (int k = 0; k < arr.length; k++) {
arr[k]=(arr[k]+5)%10; //进行加密操作,将加密好的每一位数塞入新的一个数组
arr1[k]=arr[k];
}
System.out.println("加密后的密码为:");
for (int l = 0; l < arr1.length; l++) { //遍历输出加密后的密码
System.out.print(arr1[l]);
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)