Java加密/解密方法。

Java加密/解密方法。,java,Java,我是CS一年级的学生,正在寻找更好的方法来完成这项作业 说明如下: 应用程序应该使用一个对话框提示用户输入一个四位数的数字,然后按如下方式对其进行加密:用数字加7的结果替换每个数字,并在将新值除以10后得到余数。然后用第三个数字交换第一个数字,用第四个数字交换第二个数字。然后将加密号码输出到控制台。应用程序应该使用循环来实现算法。然后编写另一个应用程序,您可以在其中输入加密号码,并将反转方案以获得原始号码 我们只能使用他在课堂上教授的技能(基本循环、方法、if语句) 我们还没有学习数组、推送、堆

我是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。这绝对是我需要努力的。这有点让我不知所措,我没有遵循所有的逻辑和技术。