我目前正在开发一个项目,我不明白为什么我的第二种方法不起作用。我正在尝试将用户输入的数字更改为其他数字。每个数字应加上+7,然后除以10.第一和第三位应该被交换,第二和第四位也是如此。它应该接受四个数字,并分别使用每个数字。我不知道如何得到我教授所要求的结果。他说1234的结果应该是0189,但不管我如何交换它我都会得到13 ...我试图修改方法来分隔数字,然后执行所需的数学运算,但现在结果是14 ... 我也不明白如何让编译器在数字的开头返回零,或者在返回数字时保持它不会在数字的开头丢弃零。 任何帮助将不胜感激,但请不要因为我不理解这项任务而讨厌。
import java.util.*;
public class SeayJ_program2
{
static Scanner input = new Scanner (System.in);
public static void main (String [] args)
{
int num = getnum();
System.out.println(encrypt(num));
}
// methods are here
public static int getnum()
{
int num;
System.out.println("Please enter a four digit number");
num = input.nextInt();
return num;
}
public static int encrypt(int num)
{
int digit1, digit2, digit3, digit4;
digit4 = num % 10;
num = num / 10;
digit4 = (num + 7) / 10;
digit3 = num % 10;
num = num / 10;
digit3 = (num + 7) / 10;
digit2 = num % 10;
num = num / 10;
digit2 = (num + 7) / 10;
digit1 = num % 10;
num = num / 10;
digit1 = (num + 7) / 10;
return digit3 + digit4 + digit1 + digit2;
}
}
答案 0 :(得分:1)
这应该适用于获取加密号码。 想想如何处理丢失的零
public static int encrypt(int number){
int temp = number;
int digit4 = (temp + 7) % 10;
temp = temp / 10;
int digit3 = (temp + 7) % 10;
temp = temp / 10;
int digit2 = (temp + 7) % 10;
temp = temp / 10;
int digit1 = (temp + 7) % 10;
return (digit3 * 1000 + digit4 * 100 + digit1 * 10 + digit2);
}
答案 1 :(得分:0)
你可以使用Jasypt,你可以调用掩码并取消屏蔽