【发布时间】:2020-05-29 00:27:16
【问题描述】:
这个问题更多是为了理解我正在使用的部分代码。第 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;
}
}
}
【问题讨论】:
-
期待两行到
valid = validFraction(firstFraction); -
没错,firstFraction 是一个字符串类型,而您将其赋予布尔值。
-
@PranavPatel 代码没有将字符串
firstFraction提供给布尔值,它给出了验证必须是布尔值的字符串的结果,应该没问题。 -
写得不好。
if块应该在循环之后,无条件。 -
感谢大家的cmets!这些帮助我从不同的角度看待这段代码。我现在看到 validFraction 方法正在影响这个 while 语句的影响方式。再次感谢! :)
标签: java while-loop boolean conditional-statements