我是第一年的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);
}
}
}
我有3个问题。
我应该为每个数学运算创建一个方法吗? (今天的课程是方法)
如何从一个整数中分离数字,对它们执行数学运算,重新排列它们,然后将它们放回一个整数?
编写此代码的简单方法是什么? (我讨厌它的外观以及它是如何表现的)
感谢任何输入!
答案 0 :(得分:0)
这是你应该怎么做的
检查字符串的长度以确保其长度为4,对每个数字使用Integer.parseInt(String.subString(0),String.subString(1)等... 然后为每个数字调用你的方法添加7并除以10
随着四个结果执行您的最终操作
答案 1 :(得分:0)
使用方法的方法可能就是这样;
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);
}
}
有一种方法可以提取数字,另一种方法可以提取数字,最后还有一种交换数字的方法。
希望它有所帮助。