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

输入浮点数时Java程序报错,如何修改Store_20190808001代码?

问题修复方案

嗨,我来帮你搞定这个问题~

你遇到的报错核心原因是Scanner的输入方法和你输入的数据类型不匹配:你现在用nextInt()读取Ayran的数量、nextLong()读取价格,但这两个方法只能接收整数输入。当你输入0.5、3.5这类带小数点的浮点数时,Scanner会直接抛出InputMismatchException,导致程序崩溃。

修复步骤:

  • 把存储数量和价格的变量类型改成浮点型(推荐用double,精度比float更高,更适合处理货币、数量类数值)
  • 对应的Scanner读取方法换成nextDouble()(如果坚持用float就用nextFloat())
  • 额外注意:如果你的输入是用逗号加空格分隔的(比如0.5, 3.5),需要给Scanner设置自定义分隔符,否则第二个数值会读取失败

修改后的完整代码:

import java.util.Scanner;

public class Store_20190808001 {
    public static void main(String[] args) {
        Scanner tara = new Scanner(System.in);
        // 设置分隔符:支持逗号+任意空格,或者默认的空格分隔
        tara.useDelimiter(",\\s*|\\s+");
        
        System.out.println("Story Inventory Enter");
        System.out.print("Enter the number of Ayran we have: ");
        // 用double存储数量,支持小数输入
        double ayransayisi = tara.nextDouble();
        
        System.out.print("Enter the cost of Ayran: ");
        // 用double存储价格,支持小数输入
        double ayranparasi = tara.nextDouble();
        
        System.out.println("thanks");
        // 利润计算直接用double类型,避免精度损失
        double kar = ayranparasi * ayransayisi;
        System.out.println("kar " + kar);
        
        tara.close(); // 记得关闭Scanner,避免资源泄漏
    }
}

补充说明:

  1. 如果你的输入是用空格分隔(比如0.5 3.5),可以去掉tara.useDelimiter(...)这一行,Scanner默认会用空格作为分隔符
  2. 选择double而非float是因为前者精度更高,能减少数值计算时的误差
  3. 最后调用tara.close()是良好的编码习惯,避免占用不必要的系统资源

内容的提问来源于stack exchange,提问作者Yusuf T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:05