Java控制台输入带逗号浮点数及运算表达式报错如何解决
Java 支持逗号格式浮点数、运算表达式输入并求最小值解决方案
现有代码问题说明
你的原始代码存在3个核心缺陷导致异常:
- 使用
int数组存储数值,无法兼容浮点数类型 Scanner.nextInt()仅支持读取标准整数格式,无法识别逗号作为小数点的浮点数、也不能解析带运算的表达式- 缺少输入完成后求最小值的逻辑
完整实现代码
import java.util.Scanner; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Aufgabe3_1 { public static void main(String[] args) { // 初始化输入工具和表达式解析引擎 Scanner keyboard = new Scanner(System.in); ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); // 改用double数组存储,支持浮点数 double[] nums = new double[3]; System.out.println("请输入三个数字(支持逗号为小数点、带四则运算的表达式,例如3,14*10):"); for(int i = 0 ; i < nums.length ; i++) { String input = keyboard.nextLine().trim(); // 把逗号替换成标准小数点 String processedInput = input.replace(',', '.'); try { // 解析运算表达式得到数值 Object result = engine.eval(processedInput); nums[i] = ((Number)result).doubleValue(); } catch (ScriptException e) { System.out.println("第" + (i+1) + "个输入格式非法,请重新输入:"); // 输入错误回退索引,让用户重新输入当前位 i--; } } // 求最小值 double min = nums[0]; for (double num : nums) { if (num < min) { min = num; } } System.out.println("三个输入值的最小值为:" + min); keyboard.close(); } }
功能说明
- 自动适配逗号/小数点作为小数分隔符的输入
- 支持加减乘除四则运算表达式的自动解析计算
- 输入格式错误时提示重新输入,不会直接崩溃
- 输入完成后自动计算并输出三个值的最小值
内容的提问来源于stack exchange,提问作者kololo
相关产品推荐
相关产品推荐

