我有一个加密算法用于练习,但我不确定我是否正确编码。在加密方法中我遇到了麻烦。
我的算法如下(我引用): “将每个数字替换为余数之后(该数字加上7的总和)除以10。”
编辑:1234应该变成8901
我该怎么办?我在正确的轨道上吗?
import java.util.*;
public class encrypt
{
public static void main(String[] args)
{
int num;
num = getnum();
encrypt(num);
}
public static int getnum()
{
Scanner console = new Scanner(System.in);
int num;
do
{
System.out.println("Enter a number that has only four digits ");
num = console.nextInt();
}
while (num < 1000 || num > 9999);
return num;
}
public static int encrypt(int num)
{
int digit4 = num%10;
num = num/10;
int digit3 = num%10;
num = num/10;
int digit2 = num%10;
num = num/10;
int digit1 = num%10;
num = num/10;
digit4 = ((digit4 + 7)/10)%10;
digit3 = ((digit3 + 7)/10);
digit2 = ((digit2 + 7)/10);
digit1 = ((digit1 + 7)/10);
System.out.print(digit1+" "+digit2+" "+digit3+" "+digit4);
return digit4;
}
}
答案 0 :(得分:1)
在所有情况下,数字+7在7到16之间,所以为了获得余数,如果数字是10或更多,则减去10,即
if (digit4 >= 10) digit4 -= 10;
if (digit3 >= 10) digit3 -= 10;
if (digit2 >= 10) digit2 -= 10;
if (digit1 >= 10) digit1 -= 10;
你想要回归
digit1 * 1000 + digit2 * 100 + digit3 * 10 + digit4
而不仅仅是digit4。除此之外,使用for循环进行改进,以便它适用于大于9999的数字。