Java如何实现用户输入字符串映射为已存在double变量值用于运算
解决方法
核心调整逻辑:放弃直接调用scanner.nextDouble()读取输入,改为先读取字符串内容,优先匹配预设关键词,匹配成功直接使用对应double变量值,匹配失败再将字符串转换为double类型即可。
完整可运行示例代码
import java.util.Scanner; public class InputMatcher { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double answer = 5.5; double first, second; // 读取第一个输入 System.out.print("Enter first number: "); String input1 = scanner.nextLine().trim(); // 匹配预设关键词Previous,忽略大小写 if (input1.equalsIgnoreCase("Previous")) { first = answer; } else { // 非关键词则尝试转换为double first = Double.parseDouble(input1); } // 读取第二个输入 System.out.print("Enter second number: "); String input2 = scanner.nextLine().trim(); if (input2.equalsIgnoreCase("Previous")) { second = answer; } else { second = Double.parseDouble(input2); } // 执行运算 answer = first + second; System.out.println("运算结果:" + answer); scanner.close(); } }
扩展优化方案
如果后续需要支持更多关键词匹配不同的double变量,可以用HashMap存储键值对减少重复判断:
// 初始化关键词映射表 Map<String, Double> keywordMap = new HashMap<>(); keywordMap.put("Previous", 5.5); keywordMap.put("PI", Math.PI); keywordMap.put("E", Math.E); // 读取输入后的判断逻辑 String input = scanner.nextLine().trim(); double value; if (keywordMap.containsKey(input)) { value = keywordMap.get(input); } else { value = Double.parseDouble(input); }
异常处理补充
如果需要兼容非法输入(既不是关键词也不是合法数字),可以给转换逻辑加try-catch捕获NumberFormatException,提示用户重新输入即可。
内容的提问来源于stack exchange,提问作者henrey 21
相关产品推荐
相关产品推荐

