我正在为学校编写一些代码,练习是:做凯撒密码。 代码:
char temp = 'u';
int key = 14;
int tempInt = ((int) temp) + key;
temp = (char) tempInt;
温度应该是132(ASCII),但是java给我'?'。我该如何解决这个问题?我认为Java正在以Unicode格式工作...但是我不知道如何在文本(凯撒密码)中添加键值。
答案 0 :(得分:3)
与您一起,代码temp为131,这不是可打印的字符 为了执行Cesare密码,您可能应该仅对可转换字符(基本上从32到127)进行操作。因此,您应该使用模数,以便127 + 1为32
您需要定义的是您要处理的字符范围(可能仅从'a'到'z'),然后确定该范围的大小。
具有32和127的示例:
char temp = 'u';
int key = 14;
int tempInt = ((int) temp) + key;
tempInt -= 32;
tempInt %= (127 - 32);
tempInt += 32;
temp = (char) tempInt;
System.out.println(temp);