猿问

在 Java 中评估真实性

我正在用 Java 编写交互式控制台应用程序。我需要用布尔响应向用户提问,但是,Scanner.in.nextBoolean()它相当脆弱,因为它会在不正确的输入时抛出异常,因此将它包装在一个方法中似乎是个好主意。我可以只使用 try/catch 块并坚持让用户键入“true”或“false”来回答并捕获拼写错误。但后来我想我可以使用Scanner.in.next()orScanner.in.nextLine()并使用类似的东西评估返回的字符串的真实性parseBoolean(String s)

有没有办法评估一个字符串的“真实性”超越真/假?也就是说,“0”/“1”“是”/“否”也会评估为真/假。


慕莱坞森
浏览 153回答 2
2回答

婷婷同学_

自定义实现怎么样?使用地图并定义 true 和 false 的所有值使用列表;如果值在列表中,则为 true,否则为 falsepublic static void main(String[] args) {&nbsp; &nbsp; Scanner sc = new Scanner(System.in);&nbsp; &nbsp; // Define true and false values&nbsp; &nbsp; Map<String, Boolean> truthiness = new HashMap<>();&nbsp; &nbsp; truthiness.put("yes", true);&nbsp; &nbsp; truthiness.put("1", true);&nbsp; &nbsp; truthiness.put("true", true);&nbsp; &nbsp; truthiness.put("t", true);&nbsp; &nbsp; truthiness.put("ya", true);&nbsp; &nbsp; truthiness.put("nein", false);&nbsp; &nbsp; //etc&nbsp; &nbsp; // Define only the true values&nbsp; &nbsp; List<String> trueValues = Arrays.asList("yes", "1", "true", "t", "ya");&nbsp; &nbsp; for(int i = 0; i < 5; ++i) {&nbsp; &nbsp; &nbsp; &nbsp; String value = sc.nextLine().toLowerCase();&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("map: " + truthiness.get(value));&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("list: " + trueValues.contains(value));&nbsp; &nbsp; }}输出yesmap: truelist: true1map: truelist: truetmap: truelist: trueyamap: truelist: trueneinmap: falselist: false

米琪卡哇伊

Apache BooleanUtils有一个toBoolean像这样工作的方法,但是它并没有0/1像我在文档中看到的那样解析'true'、'on'、'y'、't' 或 'yes'(不区分大小写)将返回 true。否则,返回 false。
随时随地看视频慕课网APP

相关分类

Java
我要回答