【问题标题】:How to prevent negative values from JSON file (java)如何防止 JSON 文件中的负值(java)
【发布时间】:2019-06-10 11:54:24
【问题描述】:

我正在尝试创建生成一些报告的 java 控制台应用程序,如果 json 数据文件中的值为负数并且我不想为负数,我会进行一些验证(例如:员工姓名不能为空)

我尝试在 Setter 中设置值,因为 name 字段是私有的。然后我在 json 文件中以负值启动应用程序,我从中获取数据,它不会抛出异常和我被声明的消息

public void setName(String name) {
    if (name == null) {
        throw new IllegalArgumentException("The Employee's name cannot be null.");
    }

    this.name = name;
}

【问题讨论】:

  • json文件中的负值(对于name)为null或空字符串??
  • 为空字符串时不输出任何内容,为null时输出null,但两种情况都不会抛出异常
  • 嗨,Alex,欢迎来到 StackOverflow!我假设否定是指属性的“不可接受”值。你能把代码 sn-p 贴在你调用 setter 的地方吗?
  • 然后更改您的 if 条件,使其同时满足 null 和空字符串。提示:你可以使用 name.length()==0
  • 谢谢你,@arjithn 我没有调用 setter,因为我使用了我的 json 文件中的值,这是我的 data.json { "name": "John Wick", "总销售额“:250 ... }

标签: java json parsing console console-application


【解决方案1】:

我将您的 Employee Constructor 更改为:捕获所有异常。

public Employee(String name, int totalSales, int salesPeriod, double experienceMultiplier) {
        try {
            this.setName(name);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
        try {
            this.setTotalSales(totalSales);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
        try {
            this.setSalesPeriod(salesPeriod);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
        try {
            this.setExperienceMultiplier(experienceMultiplier);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
    }

【讨论】:

    【解决方案2】:

    可能方法中传入的name参数不为null。

    public void setName(String name) {
        if (name == null || name.isEmpty()) {
            throw new IllegalArgumentException("The Employee's name cannot be null.");
        }
    
        this.name = name;
    }
    

    为必须作为异常抛出的 if 语句添加条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2015-12-06
      • 2016-01-30
      • 1970-01-01
      相关资源
      最近更新 更多