哪位大佬,求解答一下这个java代码
1.数字加密。输入1个四位数,将其加密后输出。加密方法是将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例如:
输入:
1257
输出:
The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
package com.xiaoa.test; import static java.lang.System.out; import java.util.Scanner; /** * * 输入1个四位数,将其加密后输出。加密方法是将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。 * 例如: 输入: 1257 输出: The encrypted number is * 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601) */ public class Demo { @SuppressWarnings("resource") public static void main(String[] args) { out.println("请输入一个四位数:"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // 判断数字是否是四位数 Boolean flag = test(num); // 将各个位上的数字加密 if (!flag) { out.println("数字不符合要求!"); return; } else { // 将数字拆分 String str = num + ""; String[] strs = str.split(""); // 创建一个数组 int[] arr = new int[strs.length]; // 遍历数组 for (int i = 0; i < arr.length; i++) { int encrypt = encrypt(strs[i]); arr[i] = encrypt; } // 将加密后的数组arr,调整顺序 int[] arr2 = change(arr); // 将数组转换成数字输出 StringBuffer sb = new StringBuffer(); for (int i : arr2) { sb.append(i + ""); } String string = sb.toString(); int result = Integer.parseInt(string); out.println("The encrypted number is " + result); } } //交换数组元素位置 private static int[] change(int[] arr) { for (int i = 0; i < arr.length; i++) { if (i == 0) { int temp = arr[0]; arr[0] = arr[2]; arr[2] = temp; } if (i == 1) { int temp = arr[1]; arr[1] = arr[3]; arr[3] = temp; } } return arr; } //加密 private static int encrypt(String str) { int num = Integer.parseInt(str); int a = num + 9; int b = a % 10; return b; } // 测试是否是四位数 private static Boolean test(int num) { Boolean flag = false; if (num >= 1000 && num <= 9999) { flag = true; } return flag; } }
package com.xiaoa.test; /** * 有蜘蛛,蜻蜓,蝉三种动物共18只,共有腿118条,翅膀20对(蜘蛛8条腿;蜻蜓6条腿,2对翅膀;蝉6条腿,1对翅膀),三种动物各几只?大佬,你看这个如何写呢? * * 分析: 1.假设有i,j,k只蜘蛛,蜻蜓,蝉 */ public class Demo2 { public static void main(String[] args) { for (int i = 1; i <= 18; i++) { for (int j = 1; j <= 18; j++) { for (int k = 1; k <= 18; k++) { int legNum = 8 * i + 6 * j + 6 * k; int wingNum = 2 * j + 1 * k; if (legNum == 118 && wingNum == 20) { System.out.println("蜘蛛,蜻蜓,蝉各:" + i + ", " + j + ", " + k + "只"); } } } } } }