You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:54:00