intellij输出在int答案应为0123(java)时不显示0

gpfsuwkq  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(311)

我是一名cs学位的新生,正在学习java。当我试图解释我的问题时,您介意我的观点吗?因为我还是java/ide新手,还不太熟悉所有东西是如何协同工作的?
首先,我的教授给了我们一个简单的任务,当要求用户加密/解密四位数的值时(例如,“输入要加密的四位整数”-9835)
然后,代码将使用一些公式(不完全正确的加密),但它将把四位数转换为一个新的四位数。因此,对于本例,9835加密将是0265。
因此,在我的课程中将netbeans用作首选ide时,代码运行良好,9835的答案是0265。
但今天,当我决定尝试intellij idea社区版并复制完全相同的代码时,答案应该是0265,但输出结果只显示265。不知何故,它没有显示0作为第一位数字。
请注意,我考虑过将加密变量从整数转换为字符串-因此将显示0,但我的教授说,这可以在不进行任何转换的情况下完成(使用netbeans时)。
在intellij中运行代码时,我可以做些什么,以便将确切的输出显示为netbeans(答案是(0265)
非常感谢,非常感谢您的帮助/建议。
以下是我的代码供您参考(这可能会让人困惑,但它确实有效。)

import java.util.Scanner;

class Encryption_Decryption
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        //Variables to store the inputs
        int encrypted_value_input , decrypted_value_input;

        //Variables for storing the individual digits.
        int digit1_E , digit2_E , digit3_E , digit4_E; //Where digit1_E is the extreme left position and _E stands for Encrypted.

        //Variables for storing the digits with the formula applied.
        int a1_e , a2_e , a3_e , a4_e;

        //Variables for storing the encrypted and decrypted values.
        int encrypted_value , decrypted_value;

        //Welcome Message

        System.out.println("This is an Encryption and Decryption Application.");
        System.out.println();

        //Start of Encryption

        System.out.print("Enter 4 digits to be Encrypted: ");
        encrypted_value_input = input.nextInt();

        digit1_E = (encrypted_value_input / 1000); //takes the first digit
        digit2_E = ((encrypted_value_input / 100) % 10);
        digit3_E = ((encrypted_value_input / 10) % 10);
        digit4_E = (encrypted_value_input % 10);

        //Encryption Formula
        a1_e = (digit1_E + 7) % 10;
        a2_e = (digit2_E + 7) % 10;
        a3_e = (digit3_E + 7) % 10;
        a4_e = (digit4_E + 7) % 10;

        //Swapping the digits. For eg. 1234 is abcd. abcd needs to be swapped to become cdab. 
        int temp1 = a1_e;
        a1_e = a3_e;
        a3_e = temp1;

        temp1 = a2_e;
        a2_e = a4_e;
        a4_e = temp1;

        encrypted_value = a1_e * 1000 + a2_e * 100 + a3_e * 10 + a4_e;
        System.out.println("The encrypted value is " + encrypted_value);
    }

}
pxyaymoc

pxyaymoc1#

将9835作为输入,
行中: encrypted_value = a1_e * 1000 + a2_e * 100 + a3_e * 10 + a4_e; 你会看到的 a1e * 1000 是0,, a2e * 100 是2,, a3e * 10 是6岁 a4e 是5。在数学中,这将等于0+200+60+5。因此,程序返回值265。由于加密值的开头需要“0”,因此解决此问题的最佳方法是将这些值放入字符串中。
您还可以在以下行中找到:

int temp1 = a1e;
    a1e = a3e;
    a3e = temp1;

    temp1 = a2e;
    a2e = a4e;
    a4e = temp1;
``` `a1e = 0` ,  `a2e = 2` ,  `a3e = 6` ,  `a4e = 5` -你已经得到了答案。现在,您只需以字符串形式打印这些值,这样您就可以得到原始整数(稍后进行解密),但也可以打印出正确的答案。
以下是您如何做到这一点:

int concA1E = a1e;
int concA2E = a2e;
int concA3E = a3e;
int concA4E = a4e;

System.out.println("The encrypted value is " + concA1E+concA2E+concA3E+concA4E);

通过在“+”符号和整数变量之间不添加任何空格,可以将它们串联起来,这将得到答案0265。
你不妨使用原版 `a1e` , `a2e` , `a3e` 及 `a4e` 用于串联的整数,但我更喜欢将它们存储在单独的变量中,以防万一。
我建议您学习如何在您选择的ide中进行调试,因为您将能够看到变量中存储的内容,以及java正在执行的操作。我就是这样找到这个问题的答案的。
如下图所示,此程序正常工作。
![](https://i.stack.imgur.com/LT3dS.png)

相关问题