java - 有人可以解释一下这段代码中的布尔值是如何工作的吗?
问题描述
这个问题更多是为了理解我正在使用的部分代码。第 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;
}
}
}
解决方案
根据代码,它在 while 循环之外并不意味着是真的。循环的概念是一直工作直到找到有效的 firstFraction。换句话说; 代码将一直要求输入,直到用户给出有效的输入(方法中的每个代码规则都有效validFraction
)。
然后它获取有效的输入并对其进行处理,其中的if (valid) {}
内容与循环决策无关,它只是用于检查输入是 a/b 还是整数的天气。然后循环退出,代码继续执行 while 循环之后的实现。
总之,循环是好的。
推荐阅读
- python - 多处理库的 Python Py2App 错误
- vue.js - 如何使用 vue2-leaflet 在 VUE SPA 中使用 Leaflet.awesome-markers
- azure - 如何将 API Management Developer Portal 中的任何模板更改重新分发到 API Management Developer Portal 的其他实例?
- r - 是否有一个 R 函数,只有在没有完全匹配的情况下才会自动从完全匹配切换到部分匹配
- html - 当用户将锚链接滚动到视图中时突出显示它们
- geocoding - 地理编码:API v7 中的 HERE API v6 locationId
- c# - 是否可以在 C# 中对 RichTextBox 使用自动完成功能?
- c++ - VSCode、C++ 和 CMake - 每个目标一个启动配置
- c# - 行车记录仪公司智能卡返回“6A88”
- go - 扩展并发负载时,基于 grpc 协议的 ALB 是否会返回与网络相关的错误?