求助:Java程序输出ASCII码而非实际字符的解决方法
解决Java加密程序输出ASCII码而非字符的问题
嘿,我来帮你搞定这个小问题!你的程序逻辑没问题,但输出时的类型转换出了岔子——当你给char类型的字符加上整数2时,Java会自动把char提升为int类型(因为char本质是16位无符号整数),所以直接输出的话就会打印对应的ASCII数值,而不是你想要的字符。
两种快速解决方法:
强制类型转换回char
在计算后把结果强制转换为char类型,明确告诉Java你要输出的是字符而非数字。修改循环里的输出语句即可:// 假设你的原代码是遍历char数组输出: Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); char[] inputCharArray = input.toCharArray(); for (char c : inputCharArray) { // 原来的错误写法:输出int类型的ASCII值 // System.out.print(c + 2); // 修改后的正确写法:强制转换为char System.out.print((char)(c + 2)); }通过字符串拼接触发自动转换
把计算结果和空字符串拼接,Java会自动把数值转换为对应的字符,写法更简洁:for (char c : inputCharArray) { System.out.print("" + (c + 2)); }
效果验证:
如果输入字符串是"hello",两种方法都会输出"jgnnq"——每个字母的ASCII值加2后对应的字符,完全符合你预期的加密功能。
内容的提问来源于stack exchange,提问作者gabi145
相关产品推荐
相关产品推荐

