java - while code, Method, Int 对布尔值的理解
问题描述
我正在审查一些大学作业的代码,我们已经获得了一些示例来帮助我们。我对下面正在做什么有点困惑,因为它使用赋值运算符而不是 .equals 或 == 方法。
如果我用 == 替换代码(并创建一个局部变量进行比较),代码将开始无限循环并显示默认值。
int select = 0;
do {
switch (select) {
case 1:
Problem();
break;
default:
System.out.println("Invalid");
break;
}
} while ((select = getSelection()) !=3);
public static int getSelection () {
(Return function here with has.nextInt and scanner class to receive input)
}
根据我有限的理解,上面将“Select”分配给“getSelection”方法中的值,它还说明此时不接受 3 例如 System.exit0 的输入。
我理解正确了吗?
(根据要求提供更多示例)我会按照以下方式做一些事情:
int select = 0;
int select1 = 0;
do {
switch (select) {
case 1:
Problem();
break;
default:
System.out.println("Invalid");
break;
}
} while (select == select1);
我试图想出一个与讲师示例的逻辑等价物,但似乎无法在不破坏 while 循环的情况下做到这一点。
解决方案
在java中,(和其他“类似C”的语言)赋值的结果是赋值,即这个代码:
do {
// other code
} while ((select = getSelection()) !=3)
是相同的:
do {
// other code
select = getSelection();
} while (select != 3)
这种风格,称为in-line conditional,通常被认为是要避免的风格。
它存在 checkstyle 违规 - 请参阅AvoidInlineConditionals
推荐阅读
- react-native - 如何在反应原生应用程序中实现暗模式?
- sap - 带有“@sap/cds”版本 3.x 的 CDS 构建命令不会将“csn.json”放在 SRV 模块中
- python - 获取numpy数组中数组的索引
- c++ - 用于非 protobuf 类的 protobuf `oneof` 功能的 C++ 实现
- android - 尝试使用 FFmPeg lib 在视频上添加标题
- android - 使用发布密钥对其进行签名后,Facebook 广告网络未显示在 Android 应用上
- git - gitignore 仅跟踪 2 个目录及其内容
- pandas - 将具有唯一键的字典添加到没有唯一键的 DataFrame
- asp.net-mvc - 具有多个复选框选择的数据表单个列过滤器
- asp.net-core - Kafka - 在 ASP.Net Core 中实例化生产者类时出错