首页 > 解决方案 > 有人可以解释一下这段代码中的布尔值是如何工作的吗?

问题描述

这个问题更多是为了理解我正在使用的部分代码。第 1 行中的“有效”布尔值成为第 2 行中 while 语句的条件。当您将布尔值放入 while 条件时,是否会自动更改布尔值?我不明白如果valid 被初始化为false,它会在while 循环之外变为true - 除非它处于while 条件中?我包含了一部分代码,这样您就可以看到发生了什么。这是我试图理解的分数计算器的一部分。

谢谢你的帮助!

boolean valid = false;   
while (!valid) {
    System.out.println("Please enter a Fraction a/b or integer (a): ");
    firstFraction = scan.nextLine();
    valid = validFraction(firstFraction);
    if (valid) {
        int findSlash = firstFraction.indexOf("/");
        if (findSlash >= 0) {
            firstFractionNumerator = Integer.parseInt(firstFraction.substring(0, findSlash));
            firstFractionDenominator = Integer.parseInt(firstFraction.substring(findSlash + 1, firstFraction.length()));
        } 
        else {
            firstFractionNumerator = Integer.parseInt(firstFraction.substring(0, firstFraction.length()));
            firstFractionDenominator = 1;
        }
    }
}

标签: javawhile-loopbooleanconditional-statements

解决方案


根据代码,它在 while 循环之外并不意味着是真的。循环的概念是一直工作直到找到有效的 firstFraction。换句话说; 代码将一直要求输入,直到用户给出有效的输入(方法中的每个代码规则都有效validFraction)。

然后它获取有效的输入并对其进行处理,其中的if (valid) {}内容与循环决策无关,它只是用于检查输入是 a/b 还是整数的天气。然后循环退出,代码继续执行 while 循环之后的实现。

总之,循环是好的。


推荐阅读