Java字符识别程序开发:多字符校验与特殊符号判断问题求助
Java单字符类型识别程序修正方案
原代码缺陷
- 无输入长度校验:直接取输入字符串首位字符,用户输入多字符内容时无法触发无效提示
- 条件分支逻辑错误:小写字母判断使用独立
if语句,未和后续分支做互斥串联,会导致小写字母输入时触发重复输出、误判问题 - 特殊符号判断逻辑受分支错误影响,无法正常输出结果
修正逻辑
- 先获取用户输入的完整字符串,优先做长度校验:如果去空格后的输入长度不等于1,直接输出
Invalid并结束程序 - 把所有类型判断改成互斥的
if-else if-else串联结构,避免多分支重复执行 - 最后兜底的else分支统一处理@、$等不属于字母、数字范畴的特殊符号
修正后完整代码
import java.util.Scanner; public class LetterOrDigit { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a character: "); // 获取完整输入并去除首尾空白字符 String inputContent = input.next().trim(); // 校验输入长度,非单字符直接返回无效提示 if (inputContent.length() != 1) { System.out.println("Invalid"); input.close(); return; } char ch = inputContent.charAt(0); // 互斥分支判断字符类型 if(ch >= 'a' && ch <= 'z') { System.out.println(ch + " is a lower-case letter"); } else if(ch >= 'A' && ch <= 'Z') { System.out.println(ch + " is an upper-case letter"); } else if(ch >= '0' && ch <= '9') { System.out.println(ch + " is a digit"); } else { System.out.println(ch + " is neither a letter nor a digit"); } input.close(); } }
效果验证
- 输入单个小写字母(如
b):正确输出小写字母提示 - 输入单个大写字母(如
M):正确输出大写字母提示 - 输入单个数字(如
9):正确输出数字提示 - 输入单个特殊符号(如
@/$/#):正确输出「既不是字母也不是数字」的提示 - 输入多字符内容(如
abc/123/a@):输出Invalid无效提示
内容的提问来源于stack exchange,提问作者Austin Derek
相关产品推荐
相关产品推荐

