我是一名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);
}
}
1条答案
按热度按时间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 concA1E = a1e;
int concA2E = a2e;
int concA3E = a3e;
int concA4E = a4e;
System.out.println("The encrypted value is " + concA1E+concA2E+concA3E+concA4E);