Java加密/解密方法。
我是CS一年级的学生,正在寻找更好的方法来完成这项作业 说明如下: 应用程序应该使用一个对话框提示用户输入一个四位数的数字,然后按如下方式对其进行加密:用数字加7的结果替换每个数字,并在将新值除以10后得到余数。然后用第三个数字交换第一个数字,用第四个数字交换第二个数字。然后将加密号码输出到控制台。应用程序应该使用循环来实现算法。然后编写另一个应用程序,您可以在其中输入加密号码,并将反转方案以获得原始号码 我们只能使用他在课堂上教授的技能(基本循环、方法、if语句) 我们还没有学习数组、推送、堆栈或弹出 到目前为止,我的代码如下所示:Java加密/解密方法。,java,Java,我是CS一年级的学生,正在寻找更好的方法来完成这项作业 说明如下: 应用程序应该使用一个对话框提示用户输入一个四位数的数字,然后按如下方式对其进行加密:用数字加7的结果替换每个数字,并在将新值除以10后得到余数。然后用第三个数字交换第一个数字,用第四个数字交换第二个数字。然后将加密号码输出到控制台。应用程序应该使用循环来实现算法。然后编写另一个应用程序,您可以在其中输入加密号码,并将反转方案以获得原始号码 我们只能使用他在课堂上教授的技能(基本循环、方法、if语句) 我们还没有学习数组、推送、堆
public class Project5e {
public static void main(String[] args) {
//promt user for the 4 digit number
String userIdStr = JOptionPane.showInputDialog("Please enter your four digit user I.D.");
int userId = Integer.parseInt(userIdStr);
encryptId(userId);
}//End Main Method
public static void encryptId(int id){
while (id > 1) {
int num4 = id % 10;
id /= 10;
int num3 = id % 10;
id /= 10;
int num2 = id % 10;
id /= 10;
int num1 = id % 10;
id /= 10;
num1 += 7;
num2 += 7;
num3 += 7;
num4 += 7;
num1 = num1 % 10;
num2 = num2 % 10;
num3 = num3 % 10;
num4 = num4 % 10;
int swap1, swap2, swap3, swap4;
swap1 = num3;
swap2 = num4;
swap3 = num1;
swap4 = num2;
System.out.print(swap1);
System.out.print(swap2);
System.out.print(swap3);
System.out.println(swap4);
}
}
}
我有三个问题
谢谢你的意见 以下是您应该如何做 检查字符串的长度以确保其长度为4,对每个数字(String.subString(0)、String.subString(1)等)使用Integer.parseInt。。。 然后,对每个数字调用您的方法,将其相加7,再除以10
有了这四个结果,就可以执行您的最终操作了使用方法的方法可能是这样的
public class Project5e {
public static void main(String[] args) {
// promt user for the 4 digit number
String userIdStr = JOptionPane.showInputDialog("Please enter your four digit user I.D.");
new Project5e().encryptId(userIdStr);
}// End Main Method
private int extract(String v, int i){
return v.charAt(i)-48; //get the digit at i position (48 is ASCII value of '0')
}
private int transform(int v){
v += 7; //transform the digit
return v % 10;
}
private String swap(String r){
return r.charAt(2) + "" + r.charAt(3)+ "" + r.charAt(0)+ "" + r.charAt(1); //swap digits
}
public void encryptId(String id) {
String r = "";
for(int i = 0; i < 4; i++){
int v = extract(id, i);
v = transform(v);
r += String.valueOf(v);
}
r = swap(r);
System.out.println(r);
}
}
公共类项目5e{
公共静态void main(字符串[]args){
//提示用户输入4位数字
字符串userIdStr=JOptionPane.showInputDialog(“请输入您的四位数用户ID”);
新的Project5e().encryptId(userIdStr);
}//端主方法
私有整数提取(字符串v,整数i){
返回v.charAt(i)-48;//获取i位置的数字(48是“0”的ASCII值)
}
私有整数变换(intv){
v+=7;//变换数字
返回v%10;
}
专用字符串交换(字符串r){
返回r.charAt(2)+“”+r.charAt(3)+“”+r.charAt(0)+“”+r.charAt(1);//交换数字
}
公共无效加密id(字符串id){
字符串r=“”;
对于(int i=0;i<4;i++){
int v=提取(id,i);
v=变换(v);
r+=字符串的值(v);
}
r=互换(r);
系统输出println(r);
}
}
有一种方法提取数字,另一种方法转换数字,最后一种方法交换数字
希望能有帮助。如果不使用数组,我想不出任何方法……如果你刚刚学会了方法,你可能应该使用它们。谢谢eltabo。这绝对是我需要努力的。这有点让我不知所措,我没有遵循所有的逻辑和技术。