当 int answer 应该是 0123 (Java) 时,IntelliJ 输出不显示 0
IntelliJ output does not show 0 when the int answer is supposed to be 0123 (Java)
我是 CS 学位和学习的新生 Java。当我试图解释我的问题时,你介意容忍我吗,因为我对 Java/IDE 还是个新手,而且还不太熟悉一切如何协同工作?
首先,当用户被询问时,我的教授给了我们一个简单的分配给 encrypt/decrypt 四位数的值。 (例如,“输入要加密的四位整数”- 9835)
代码随后将使用一些公式(不是完全正确的加密),但它会将四位数字变成一个新的四位数字。所以对于这个例子,加密的 9835 将是 0265.
因此,当我的课程首选 IDE 使用 Netbeans 时,代码运行良好,9835 的答案是 0265。
但是今天,当我决定尝试 IntelliJ Idea Community Edition 并复制完全相同的代码时,答案应该是 0265,但输出只显示 265。不知何故它没有显示 0 作为第一位数字.
请注意,我考虑过将加密变量从整数转换为字符串 - 因此将显示 0,但我的教授说它可以在没有任何转换的情况下完成(使用 Netbeans 时)。
当 IntelliJ 中的 运行 代码显示与 Netbeans 相同的输出时,我该怎么做? (答案是 0265)
非常感谢,非常感谢任何 help/advice。
下面是我的代码供您参考。 (这可能令人困惑,但它确实有效。)
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);
}
}
输入 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。因此,程序 returns 值 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 正在执行的操作。这就是我找到这个问题的解决方案的方式。
如下图所示,该程序有效。
我是 CS 学位和学习的新生 Java。当我试图解释我的问题时,你介意容忍我吗,因为我对 Java/IDE 还是个新手,而且还不太熟悉一切如何协同工作?
首先,当用户被询问时,我的教授给了我们一个简单的分配给 encrypt/decrypt 四位数的值。 (例如,“输入要加密的四位整数”- 9835)
代码随后将使用一些公式(不是完全正确的加密),但它会将四位数字变成一个新的四位数字。所以对于这个例子,加密的 9835 将是 0265.
因此,当我的课程首选 IDE 使用 Netbeans 时,代码运行良好,9835 的答案是 0265。
但是今天,当我决定尝试 IntelliJ Idea Community Edition 并复制完全相同的代码时,答案应该是 0265,但输出只显示 265。不知何故它没有显示 0 作为第一位数字.
请注意,我考虑过将加密变量从整数转换为字符串 - 因此将显示 0,但我的教授说它可以在没有任何转换的情况下完成(使用 Netbeans 时)。
当 IntelliJ 中的 运行 代码显示与 Netbeans 相同的输出时,我该怎么做? (答案是 0265)
非常感谢,非常感谢任何 help/advice。
下面是我的代码供您参考。 (这可能令人困惑,但它确实有效。)
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);
}
}
输入 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。因此,程序 returns 值 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 正在执行的操作。这就是我找到这个问题的解决方案的方式。
如下图所示,该程序有效。