Java Encryptor / Decryptor方法。

时间:2014-03-06 01:27:34

标签: 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);

        }
    }
}

我有3个问题。

  1. 我应该为每个数学运算创建一个方法吗? (今天的课程是方法)

  2. 如何从一个整数中分离数字,对它们执行数学运算,重新排列它们,然后将它们放回一个整数?

  3. 编写此代码的简单方法是什么? (我讨厌它的外观以及它是如何表现的)

  4. 感谢任何输入!

2 个答案:

答案 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);
    }
}

有一种方法可以提取数字,另一种方法可以提取数字,最后还有一种交换数字的方法。

希望它有所帮助。