在Java中评估真实性

huwehgph  于 2023-02-28  发布在  Java
关注(0)|答案(2)|浏览(143)

我正在用Java编写一个交互式控制台应用程序。我需要用布尔响应来询问用户问题,然而,Scanner.in.nextBoolean()相当脆弱,因为它会在不正确的输入时抛出异常,所以把它 Package 在一个方法中似乎是个好主意。我可以只使用一个try/catch块,坚持让用户输入“true”或“false”来回答和捕捉错别字。但是后来我想我可以使用Scanner.in.next()Scanner.in.nextLine(),并使用类似parseBoolean(String s)的东西来评估返回的字符串的真实性。
除了真/假之外,还有什么方法可以评估字符串的“真实性”吗?也就是说,“0”/“1”、“yes”/“no”也会被评估为真/假。

k4emjkb1

k4emjkb11#

定制实现怎么样?
1.使用Map并定义true和false的所有值
1.使用列表;如果值在列表中,则返回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
bqf10yzr

bqf10yzr2#

ApacheBooleanUtils有一个方法toBoolean,它的工作原理与此类似,但是它并不像我在文档中看到的那样解析0/1
“true”、“on”、“y”、“t”或“yes”(不区分大小写)将返回true。否则,将返回false。

相关问题