//题目 某公司采用公用电话传递信息,数据是小于8位的整数,为了确保安全需要在过程中加密
//现将数字倒序,然后将每位数字都加上5,用得到的和除以10的余数代替该数字,最后将第一位和最后一位数字交换
// 22346 64322 19877 79871
// 方法一
/*
- 思路 : 1.先输入字符串,并分割 2. 输入数组 3. 数组倒序输出 4. 数组+5并且%10 5.
-
最后一个位和第一位相互转换
*/
Scanner sc = new Scanner(System.in);//java的包,童工用户在控制台输入
System.out.println("请将要输入的数每一个用‘,’隔开");
String s = sc.nextLine();
String[] arr = s.split(",");//将字符串分割为字符,并返回数组
int a[] = new int[arr.length]; //定义一个int数组接收强制转换后的arr数组
int b[]=new int[a.length];
for (int i = 0; i < arr.length; i++) {
a[i] = Integer.parseInt(arr[i]); //遍历接收
}
for (int i = a.length - 1; i >= 0; i--) {
b[a.length - i - 1] = (a[i] + 5) % 10; //倒序输出,并+5后%10
}
for (int i = 0; i < b.length; i++) {
if (i == 0) { //最后一位和第一位交换
int temp = b[0];
b[0] = b[b.length - 1];
b[b.length - 1] = temp;
}
}for (int i = 0; i < b.length; i++) { System.out.print(b[i]); //输出加密后的数字 }
// 方法二 做输入端的思考,直接将数字单个存入数组,缺点输入麻烦
// 思路 : 1.先单个数输入,并判断输入了几个数 2. 输入数组 3. 数组倒序输出 4. 数组+5并且%10 5.
// 最后一个位和第一位相互转换
Scanner sc=new Scanner(System.in);
System.out.println("输入你想要输入的数有几位");
int wei=sc.nextInt();
int []a=new int [wei];
int [] b=new int [a.length];
for (int i = 0; i <a.length; i++) {
System.out.println("请输入第"+i+"个数");
a[i]=sc.nextInt();
while (a[i]>9||a[i]<0) {//判断 是否输入的数大于9或者为负数的话
System.out.println("请重新输入第"+i+"个数");
a[i]=sc.nextInt();
break;
}
}
for (int i = a.length-1; i >=0; i--) {
b[a.length-i-1]=(a[i]+5)%10;
}
for (int i = 0; i< b.length; i++) {
if(i==0) {
int temp=b[0];
b[0]=b[b.length-1];
b[b.length-1]=temp;
}
}
for (int i = 0; i<b.length; i++) {
System.out.print(b[i]);
}
System.out.println();
for (int i = 0; i < a.length; i++) {
System.out.print(b[i]);
}
// 方法三,最浪费算法复杂度的一种
// 思路:1. 先确定你的数有几位 2. 输入一个数,并且通过取模截取个位,十位.... 3.. 然后判断 倒序 4. +5且 %10
// 5. 最后一位和第一位相换
Scanner sc=new Scanner(System.in);
System.out.println("输入你想要输入的数有几位");
int wei=sc.nextInt();
System.out.println("输入你想要输入的数");
int number=sc.nextInt();
int []a=new int [wei];
int [] b=new int[a.length];
//通过这个数组直接倒序
for(int i = 0; i < a.length; i++) {
if (i==0) { a[i]=number%10;
}
else {
a[i]=(int) ((number/(Math.pow(10, i)))%10);
}
}
for (int i = 0;i < a.length; i++) {
a[i]=(a[i]+5)%10;
}
for (int i = 0; i < a.length; i++)
{ if(i==0) {
int temp=a[a.length-1];
a[a.length-1]=a[0];
a[0]=temp;
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
}
// 方法四 最麻烦的 自己定义变量 ,然后取模 ,胜在好理解 我就不写了
// int ge=number/10的n次方去于10 等等 太麻烦了
// 解密方法 反写就可以
共同学习,写下你的评论
评论加载中...
作者其他优质文章