哪位大佬,求解答一下这个java代码
1.数字加密。输入1个四位数,将其加密后输出。加密方法是将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例如:
输入:
1257
输出:
The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
2018-05-22 17:40
程序代码: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;
}
}

2018-05-22 19:15
2018-05-22 19:57
2018-05-22 20:01
2018-05-22 20:03
2018-05-22 20:06
程序代码: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 + "只");
}
}
}
}
}
}
2018-05-22 20:13
2018-05-22 20:13
2018-05-22 20:19
2018-05-22 20:28