0

我正在尝试制作一个程序,您可以在其中输入信用卡号,它会在最后使用 ASCII 字母/符号向您吐出数字,并使用添加的其余数字除以 26。我觉得我的代码是对的,尽管当我运行程序时,没有出现任何符号。我没有得到调试错误或任何东西,但我的 (char) 符号没有出现。它显示的只是数字。有人能帮助我吗?

这是我到目前为止所拥有的:

import java.util.*;
import java.text.*;
import java.math.*;

public class Program{

public static void main (String []args){

Scanner keyboard = new Scanner(System.in);

int CC, CC2, CC3, CC4;


System.out.println("Enter your credit card number 2 numbers at a time (XX XX XX XX)");
CC=keyboard.nextInt();
CC2=keyboard.nextInt();
CC3=keyboard.nextInt();
CC4=keyboard.nextInt();

 int CC6;

CC6= (CC+CC4+CC2+CC3)%26;

char CC7;

CC7 = (char)CC6;


System.out.println("The correct number and code is:" +CC+CC2+CC3+CC4+CC7);    

}
}
4

3 回答 3

1

我相信你正在寻找

Character.toChars(CC6);

确保在测试时,您使用的值实际上映射到看起来不错的值。例如Character.toChars(65)结果为“A”。

如需进一步参考,请参阅:Converting stream of int's to char's in java

于 2013-09-26T03:53:06.263 回答
0

Print them separately and you can see some weird symbol coming in the console.

System.out.println("The correct number and code is:" + CC + CC2 + CC3 + CC4);
System.out.println(CC7);

The thing is, you'll get the CC7 in the range of 0-25 only since you're doing a mod 26 and this range contains ASCII codes of non-character keys.

Actual character(or for that case, special characters) start from ASCII code 33. Have a look at the ASCII table here.

于 2013-09-26T03:55:29.253 回答
0

那里有一个字符,它只是一个不能在控制台上很好地显示的字符。可能被渲染为空白区域。我看到您正在使用 26 的其余部分,所以我猜您希望它是一个字母 (az)。字母的 ascii 字符从 65(大写)和 97(小写)开始。

进行此更改

CC6= (CC+CC4+CC2+CC3)%26+65;

你会看到 A 和 Z 之间的一个字母被打印出来。

您可以在此处查看完整的 ASCII 表http://www.asciitable.com/

于 2013-09-26T03:53:19.930 回答