有没有办法简化我的代码?

时间:2017-02-08 02:52:01

标签: java encryption

Hello项目我必须加密和解密txt文件。一切都工作正常,程序正是我想要的,我只是好奇是否有办法简化它的一部分

int first;
            int second;
            int third;
            int fourth;

            long M = 0;

            if (toDecrypt.length() == 4) {
                first = ((toDecrypt.charAt(0) - '0') * 1000);
                second = ((toDecrypt.charAt(1) - '0') * 100);
                third = ((toDecrypt.charAt(2) - '0') * 10);
                fourth = toDecrypt.charAt(3) - '0';

                M = first + second + third + fourth;
            }

            if (toDecrypt.length() == 3) {
                first = ((toDecrypt.charAt(0) - '0') * 100);
                second = ((toDecrypt.charAt(1) - '0') * 10);
                third = toDecrypt.charAt(2) - '0';

                M = first + second + third;
            }

            if (toDecrypt.length() == 2) {
                first = ((toDecrypt.charAt(0) - '0') * 10);
                second = toDecrypt.charAt(1) - '0';

                M = first + second;
            }

            long temp = M;

本节所做的是逐行接收我的加密文件,这些文件包含数字并对其进行解密。该线可以有每行2-4个数字。就像我说代码工作完美我只是好奇,如果我能够简化这个,或者如果我正在思考它,如果它工作,不打扰改变它。我想我的整体问题是在现实世界中,编码人员/程序员是否试图使他们的程序更加简化,或者首先他们使用的选项是什么?

1 个答案:

答案 0 :(得分:3)

这样的事情怎么样:

long M = 0;
int hash = 1;
for(int i = toDecrypt.length() - 1 ; i >= 0; i--)
{
    M += (toDecrypt.charAt( i ) - '0') * hash;
    hash *= 10;
}

如果您只是尝试从文件中读取数字,您是否考虑使用类似Scanner的内容?您可以使用nextInt()函数从文件中获取每个数字。您的循环似乎只是将String转换为数字,对吧?