Java中输入M/F后条件判断仍走else分支的问题修复方法
问题原因与修复方案
你的代码核心问题出在字符常量的使用上:你把变量M和F初始化成了ASCII值为0的空字符,而不是代表性别标记的字符'M'和'F'。这就导致用户输入的'M'或'F'永远和这两个变量不相等,自然每次都会执行else分支。
修正后的代码
System.out.println("Please specify you're gender with M for male and F for female"); char gender = readertext.next().charAt(0); if (gender == 'M') { System.out.println("You picked M"); } else if (gender == 'F') { System.out.println("You picked F"); } else { System.out.println("You did not choose M or F"); }
额外注意点
- Java里字符常量必须用单引号
'包裹,双引号是用来定义字符串的,别搞混 - 完全没必要额外定义
M、F变量,直接在条件判断里用'M'、'F'更清晰,也不会出错 - 如果想兼容用户输入小写的
m或f,可以先把输入转成大写再判断:char gender = Character.toUpperCase(readertext.next().charAt(0));
内容的提问来源于stack exchange,提问作者The Last AdmiraL
相关产品推荐
相关产品推荐

