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

Eclipse中输入小数报错及条件控制语句问题咨询

问题原因与解决方法

报错根源

你遇到的是InputMismatchException,核心原因是系统区域设置(Locale)的小数点分隔符不匹配:
Scanner.nextDouble()默认跟随系统Locale解析数字。如果你的系统Locale使用逗号(,)作为小数点分隔符(比如部分欧洲地区的系统),输入英文格式的点(.)就会被判定为非法格式,触发报错。

解决方案

有两种简单可行的处理方式:

方式1:适配系统输入格式

如果系统默认用逗号做小数点分隔符,输入时把.换成,即可,比如输入7,1而非7.1。

方式2:强制Scanner使用英文Locale解析

修改代码,给Scanner指定使用点作为小数点的Locale(比如Locale.US),这样输入.就能正常解析:

package controle;

import java.util.Scanner;
import java.util.Locale; // 新增导入

public class If {
    
    public static void main(String[] args) {
        
        // 给Scanner指定Locale.US,强制用点作为小数点分隔符
        Scanner input = new Scanner(System.in).useLocale(Locale.US);
        
        System.out.print("Type the average: ");
        double average = input.nextDouble();
        
        // 注意:if语句包含多行执行代码时,必须加花括号{},否则只有第一行属于if块
        if(average >= 7.0) {
            System.out.println("approved");
            System.out.println("Congratulations");
        }
        
        input.close();
    }

}

额外提示

你的代码里还有一个新手常见问题:if语句未加花括号{}时,只有紧跟的第一行代码属于if的执行块。也就是说不管平均分是否≥7,System.out.println("Congratulations");都会执行。如果要让这两行都在条件满足时执行,一定要加上花括号,就像上面修改后的代码那样。

内容的提问来源于stack exchange,提问作者Fillypper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:38:30