如何让Java代码支持用户输入不区分大小写且可输入选项简写?
实现思路
- 输入标准化:将用户输入的内容先去除首尾空白,再统一转为全小写(或全大写),从根源消除大小写区分的限制
- 模糊匹配:将所有菜单选项也转为相同的大小写格式,通过
contains()方法判断用户输入是否为选项的子串,无需输入完整内容即可匹配 - 歧义处理:新增匹配结果校验逻辑,若用户输入同时匹配多个选项(例如输入
e同时匹配Play a game和Explore the internet),提示用户输入更精准的内容;若未匹配到任何选项则提示输入无效
修改后的完整代码
package com.unspoken; import java.util.Scanner; import java.awt.*; public class Main { public static void main(String[] args) { String play = "Play a game"; String internet = "Explore the internet"; String calculator = "Use the calculator"; String quit = "Quit Untouched"; String pickedEvent = "Unpicked"; Scanner scanner = new Scanner(System.in); System.out.println("Hello, My name is Ghost. What's your name?"); String name = scanner.nextLine().trim(); System.out.println("Hello " + name + ". What would you like to do today?"); while (!pickedEvent.equals("Picked")) { System.out.println(play); System.out.println(internet); System.out.println(calculator); System.out.println(quit); // 处理用户输入:去空白+转全小写 String userInput = scanner.nextLine().trim().toLowerCase(); int matchCount = 0; String matchedOption = null; // 逐个匹配选项 if (play.toLowerCase().contains(userInput)) { matchCount++; matchedOption = play; } if (internet.toLowerCase().contains(userInput)) { matchCount++; matchedOption = internet; } if (calculator.toLowerCase().contains(userInput)) { matchCount++; matchedOption = calculator; } if (quit.toLowerCase().contains(userInput)) { matchCount++; matchedOption = quit; } // 处理匹配结果 if (matchCount == 0) { System.out.println("未匹配到对应选项,请重新输入"); continue; } else if (matchCount > 1) { System.out.println("匹配到多个选项,请输入更明确的内容"); continue; } // 唯一匹配,执行对应逻辑 switch (matchedOption) { case "Play a game": System.out.println("Okay " + name + ", Loading games."); pickedEvent = "Picked"; break; case "Explore the internet": System.out.println("Okay " + name + ", Loading the internet."); pickedEvent = "Picked"; break; case "Use the calculator": System.out.println("Okay " + name + ", Loading calculator."); pickedEvent = "Picked"; break; case "Quit Untouched": System.out.println("Are you sure you want to quit Untouched " + name + "?"); String quitAnswer = scanner.nextLine().trim(); if(quitAnswer.equalsIgnoreCase("Yes")){ System.out.println("Okay goodbye " + name + ", Have a nice day."); pickedEvent = "Picked"; break; }else if(quitAnswer.equalsIgnoreCase("No")){ System.out.println("What would you like to do today " + name + "?"); } } } scanner.close(); } }
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

