Java如何锁定对象为char类型避免强转int,不修改sout行输出X Y Z
问题根因
Java 语言规范明确规定,char 类型参与算术运算时,会自动向上转型为 int 类型计算结果。你代码中的 letter + i 是两个 char 做算术加法,运算结果为 int 类型,后续和字符串 " " 拼接时,会直接输出数字的字符串形式,所以得到 88 89 90 而非字符本身。
Java 中没有「锁定字符类型避免自动转为整数」的语法规则,这种自动类型提升是编译阶段就确定的行为,无法直接修改。
可行解决方案
核心思路是不修改 System.out.print 那行代码,仅调整前面的变量定义和循环逻辑,让 letter + i 运算变成字符串拼接而非算术加法,自然就不会出现数字输出:
public class LectureFour { public static void main(String args[]) { // 将letter定义为空字符串,抵消后续+运算的算术属性 String letter = ""; String i; // 循环控制i依次取值为"X" "Y" "Z" for (i = "X"; i.charAt(0) <= 'Z'; i = String.valueOf((char)(i.charAt(0) + 1))) { // 此行代码完全没有修改,也没有使用被禁止的强转写法 System.out.print(letter + i + " "); } } }
运行后输出为 X Y Z ,如果需要严格去掉末尾多余的空格,可以额外在循环结束后输出一次退格符,或者调整循环逻辑判断终止条件即可。
方案合规性说明
- 完全未修改题目要求保留的
System.out.print行代码 - 未使用被禁止的在
print参数内强转(char)(letter + i)的写法 - 所有修改仅涉及变量类型声明和循环控制逻辑,符合题目约束
内容的提问来源于stack exchange,提问作者John Wilburn
相关产品推荐
相关产品推荐

