嗨,这是我第一次使用这个网站。 我不知道为什么当我运行程序时它返回负数。我有 8.2 Netbeans ver idk 如果这与此有关 事情应该是这样的。
示例运行1:
Enter your key: 2
Enter your 5-Digit Pin Code: 12345
The Encrypted Pin is: 76543
Enter your 5-Digit Pin Code: 11220
The Encrypted Pin is: 24433
Enter your 5-Digit Pin Code: 10000
The Encrypted Pin is: 22223
Enter your 5-Digit Pin Code: 9
Thank you !
示例运行 2:
Enter your key: 6
Your key should be an integer from 1 to 4
这是我的代码
import java.util.Scanner;
public class JavaApplication13 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter your key:");
int key = scan.nextInt();
int pincode, digit, encrypteddigit,encryptedpin=0;
if (key >= 1 && key <= 4) {
do {
System.out.print("Enter your 5-Digit pin code: ");
pincode = scan.nextInt();
if (pincode >= 10000 && pincode <= 99999) {
while (pincode> 0) {
digit = pincode % 10;
encrypteddigit = (digit + key)%10;
encryptedpin= encryptedpin*10+encrypteddigit;
pincode /= 10;}
System.out.println("The encrypted pin is: "+ encryptedpin );
} else {
System.out.println("thank you!");
break;
}
} while (true);
} else {
System.out.println("Your key should be an integer between 1 to 4");
}
}
}
这是我运行程序时的结果
run:
Enter your key:2
Enter your 5-Digit pin code: 12345
The encrypted pin is: 76543
Enter your 5-Digit pin code: 22007
The encrypted pin is: -935542348 **(why is it giving this?)**
Enter your 5-Digit pin code: 9
thank you!
BUILD SUCCESSFUL (total time: 24 seconds)
您不会为下一个 5 位 PIN 码迭代重置
encryptedpin
变量。当您按如下方式调整代码时:
System.out.println("encrypted pin before: "+encryptedpin);
encryptedpin= encryptedpin*10+encrypteddigit;
System.out.println("encrypted pin after: "+encryptedpin);
并使用输入运行第一次迭代
12345
,您将得到以下输出:
Enter your key:2
Enter your 5-Digit pin code: 12345
encrypted pin before: 0
encrypted pin after: 7
encrypted pin before: 7
encrypted pin after: 76
encrypted pin before: 76
encrypted pin after: 765
encrypted pin before: 765
encrypted pin after: 7654
encrypted pin before: 7654
encrypted pin after: 76543
The encrypted pin is: 76543
Enter your 5-Digit pin code:
但是当您输入下一个 5 位 PIN 码时,您将使用上一个最后加密的 PIN 值。您会在获得的附加输出中注意到这一点:
Enter your key:2
Enter your 5-Digit pin code: 12345
encrypted pin before: 0
encrypted pin after: 7
encrypted pin before: 7
encrypted pin after: 76
encrypted pin before: 76
encrypted pin after: 765
encrypted pin before: 765
encrypted pin after: 7654
encrypted pin before: 7654
encrypted pin after: 76543
The encrypted pin is: 76543
Enter your 5-Digit pin code: 11220
encrypted pin before: 76543 <-- no reset here
encrypted pin after: 765432
encrypted pin before: 765432
encrypted pin after: 7654324
encrypted pin before: 7654324
encrypted pin after: 76543244
encrypted pin before: 76543244
encrypted pin after: 765432443
encrypted pin before: 765432443
encrypted pin after: -935610159 <-- integer overflow
The encrypted pin is: -935610159
Enter your 5-Digit pin code:
最终,您将遇到整数溢出,请参阅什么是整数溢出错误?
解决方案是在下一个 5 位 pin 码迭代之前调用
encryptedpin=0
,因此它会在 0
处重新启动。