输入一个数字,将每个数字加五再对10 取余,再反转
import java.util.Scanner;
public class Test6_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//输入数字
System.out.print("请输入一个数字:");
int number = sc.nextInt();
//得出数字长度
int count = numberLength(number);
//存储密码
int[] originalPassword = receivedPassword(number, count);
//处理密码
int[] finalPassword = dealPassword(originalPassword);
System.out.print("加密后密码为:");
for (int i = 0; i < finalPassword.length; i++) {
System.out.print(finalPassword[i]);
}
}
//计算密码长度
public static int numberLength(int number) {
String count0 = String.valueOf(number);
return count0.length();
}
//存入密码
public static int[] receivedPassword(int number, int count) {
int[] password = new int[count];
String temp = String.valueOf(number);
for (int i = 0; i < temp.length(); i++) {
char temp2 = temp.charAt(i);
password[i] = Integer.parseInt(Character.toString(temp2));
System.out.print(password[i]);
}
return password;
}
//处理密码
public static int[] dealPassword(int[] originalPassword) {
//1.每个数字加五
int i1 = 0, i2 = originalPassword.length - 1;
for (int i = 0; i < originalPassword.length; i++) {
originalPassword[i] += 5;
originalPassword[i] = originalPassword[i] % 10;
}
while (i1 < i2){
int temp = originalPassword[i1];
originalPassword[i1] = originalPassword[i2];
originalPassword[i2] = temp;
i1++;
i2--;
}
return originalPassword;
}
}
解密:
import java.util.Arrays;
import java.util.Scanner;
public class Test6_2 {
public static void main(String[] args) {
//输入加密后密码,存入数组
Scanner sc = new Scanner(System.in);
System.out.print("请输入要解密的密码:");
int number = sc.nextInt();
int count = length(number);
int[] receivedPassword = receivedPassword(count, number);
//处理数组
int[] originalPassword = dealPassword(receivedPassword);
//System.out.println(Arrays.toString(originalPassword));
//打印原始密码
for (int i = 0; i < originalPassword.length; i++) {
System.out.print(originalPassword[i]);
}
}
//计算数字长度的方法,返回长度.
public static int length(int number){
int count = 0;
while (number != 0){
number /= 10;
count++;
}
return count;
}
//定义数组,将数字存入数组的方法,返回存入后的数组.
public static int[] receivedPassword(int length, int number){
int [] receivedPassword = new int[length];
String temp = String.valueOf(number);
for (int i = 0; i < temp.length(); i++) {
char temp2 = temp.charAt(i);
receivedPassword[i] = Integer.parseInt(Character.toString(temp2));
//System.out.print(password[i]);
}
return receivedPassword;
}
//根据要求解密数组,返回解密后的数组
public static int[] dealPassword(int[] receivedPassword){
//1.反转
int[] originalPassword = new int[receivedPassword.length];
int i1 = 0, i2 = receivedPassword.length - 1;
while (i1 < i2){
int temp = receivedPassword[i1];
receivedPassword[i1] = receivedPassword[i2];
receivedPassword[i2] = temp;
i1++;
i2--;
}
//处理
for (int i = 0; i < receivedPassword.length; i++) {
originalPassword[i] = receivedPassword[i];
//System.arraycopy(receivedPassword, 0, originalPassword, 0, receivedPassword.length);
if (originalPassword[i] < 5){
originalPassword[i] = originalPassword[i] + 10 - 5;
} else if (originalPassword[i] >= 5) {
originalPassword[i] = originalPassword[i] - 5;
}
}
//System.arraycopy(receivedPassword, 0, originalPassword, 0, receivedPassword.length);
return originalPassword;
}
}