You need to enable JavaScript to run this app. 如何实现用户未输入double类型薪资时,从独立于main的外部类调用默认薪资值
优惠活动
大模型
产品
解决方案
定价
更多

如何实现用户未输入double类型薪资时,从独立于main的外部类调用默认薪资值

输入空值判定与默认薪资调用实现

结构设计说明

按照需求拆分两个完全独立的类,避免代码耦合:

  • 第一个类是主程序入口类,负责输出提示文本、接收用户输入、做空值判定、计算最终生效的薪资值
  • 第二个类是独立的配置存储类,和主类没有嵌套、继承关系,专门存放预设的默认double类型薪资值,供主类调用

步骤1:实现独立的默认值配置类

在类内部定义可被外部访问的静态常量,存储预设的默认薪资:

// 完全独立的配置类,与主程序入口类无依赖
public class SalaryConfig {
    // 预设的默认double类型薪资
    public static final double DEFAULT_SALARY = 8000.0;
}

步骤2:主类的输入与判定逻辑实现

需要重点注意Java原生类型的限制:double作为基本类型没有null值的概念,默认值为0.0,无法区分“用户未输入”和“用户输入了0”的状态,因此接收输入的临时变量必须使用包装类Double类型,才能承载null状态。
完整逻辑流程:

  1. 控制台输出要求的提示文本enter salary:,等待用户输入
  2. 按行读取用户输入的内容,去除首尾空白字符
  3. 如果用户输入内容为空(直接回车、全输入空格),将临时薪资变量标记为null
  4. 如果用户输入了有效内容,将字符串解析为double值存入临时变量
  5. 判定临时变量是否为null:为null则调用SalaryConfig类里的默认薪资值,不为null则直接使用用户输入的值

对应的主类代码:

import java.util.Scanner;

public class SalaryInputMain {
    public static void main(String[] args) {
        Scanner inputScanner = new Scanner(System.in);
        // 使用包装类Double才能存储null值,不能用原始double
        Double tempSalary = null;

        // 输出要求的提示文本
        System.out.print("enter salary:");
        String rawInput = inputScanner.nextLine().trim();

        // 存在有效输入时解析为数值
        if (!rawInput.isEmpty()) {
            try {
                tempSalary = Double.parseDouble(rawInput);
            } catch (NumberFormatException e) {
                // 输入格式不合法时,按null处理触发默认值逻辑
                tempSalary = null;
            }
        }

        // 最终薪资值的判定逻辑
        double finalSalary = tempSalary != null ? 
            tempSalary : SalaryConfig.DEFAULT_SALARY;
        
        System.out.println("当前生效的薪资值:" + finalSalary);
        inputScanner.close();
    }
}

常见实现误区

  • 不要直接使用scanner.nextDouble()读取输入:这个方法遇到用户直接回车的空输入时,会直接抛出InputMismatchException中断程序,必须通过按行读字符串、判空、再解析数值的流程处理空输入场景
  • 不要把默认薪资值硬编码在主类里:这样不符合“从独立类调用默认值”的需求,后续修改默认值时需要改动主类的业务代码,增加维护成本

实现效果说明

  • 用户直接在enter salary:提示后敲回车不输入内容时,程序会自动取SalaryConfig类中预设的8000.0作为最终薪资
  • 用户输入合法的double类型数值时,程序会直接使用用户输入的值
  • 后续调整默认薪资值时,只需要修改SalaryConfig类中的常量即可,不需要改动主流程的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 04:36:06