为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中评估真实性

在 Java 中评估真实性

慕莱坞森 2023-06-14 16:40:04
我正在用 Java 编写交互式控制台应用程序。我需要用布尔响应向用户提问,但是,Scanner.in.nextBoolean()它相当脆弱,因为它会在不正确的输入时抛出异常,因此将它包装在一个方法中似乎是个好主意。我可以只使用 try/catch 块并坚持让用户键入“true”或“false”来回答并捕获拼写错误。但后来我想我可以使用Scanner.in.next()orScanner.in.nextLine()并使用类似的东西评估返回的字符串的真实性parseBoolean(String s)。有没有办法评估一个字符串的“真实性”超越真/假?也就是说,“0”/“1”“是”/“否”也会评估为真/假。
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

自定义实现怎么样?

  1. 使用地图并定义 true 和 false 的所有值

  2. 使用列表;如果值在列表中,则为 true,否则为 false

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);


    // Define true and false values

    Map<String, Boolean> truthiness = new HashMap<>();


    truthiness.put("yes", true);

    truthiness.put("1", true);

    truthiness.put("true", true);

    truthiness.put("t", true);

    truthiness.put("ya", true);

    truthiness.put("nein", false);

    //etc


    // Define only the true values

    List<String> trueValues = Arrays.asList("yes", "1", "true", "t", "ya");


    for(int i = 0; i < 5; ++i) {

        String value = sc.nextLine().toLowerCase();


        System.out.println("map: " + truthiness.get(value));

        System.out.println("list: " + trueValues.contains(value));

    }

}

输出


yes

map: true

list: true

1

map: true

list: true

t

map: true

list: true

ya

map: true

list: true

nein

map: false

list: false


查看完整回答
反对 回复 2023-06-14
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

Apache BooleanUtils有一个toBoolean像这样工作的方法,但是它并没有0/1像我在文档中看到的那样解析

'true'、'on'、'y'、't' 或 'yes'(不区分大小写)将返回 true。否则,返回 false。


查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信