java - 第一个 if 语句始终为真,但第二个不是
问题描述
如果以前有人问过这个问题,我很抱歉。
这是我拥有的一些代码。
int id1 = 1234;
int id2 = 5678;
int idPass1 = 123;
int idPass2 = 456;
System.out.println("Welcome. Please enter your Employee ID.");
while(true) {
int id = input.nextInt();
//add more if needed
if(id != id1 || id != id2){
System.out.println("Employee does not exist. Please try again.");
} else {
break;
}
}
System.out.println("Please enter your password.");
while(true){
int idPass = input.nextInt();
//add more if needed
if(idPass != idPass1 || idPass != idPass2){
System.out.println("Incorrect Password entered. Please try again.");
} else {
break;
}
}
如你看到的。2 if/else 语句完全相同,除了变量。在 IntelliJ 中,带有 ID 的第一条语句表示它始终为真。第二个带有密码的语句没有给我那个警告。
如果第二个 if/else 语句完全相同(减去变量)并且并不总是正确的,那么第一个 if/else 语句如何总是正确的?
(扫描仪在此代码之前声明。)
解决方案
由于您的id1
和id2
不相等,因此(id != id1 || id != id2)
应始终将表达式评估为真。您可能想使用&&
来替换||
. 然后你的代码落在第一个循环中,导致第二个表达式没有被评估,所以没有警告。
推荐阅读
- java - JBehave - 在一个故事中不可能有多个结果?
- angular - 如何使用 javascript 从简单的 html 页面触发 Angular Web 组件(自定义元素)上的 Click 事件
- python - 查找具有最大数据的数据框
- java - 制作 java tic tac toe vs 计算机
- php - 正则表达式:拆分函数调用参数
- c# - 使用模型在 POST 期间 ASP.Net Cookie 身份验证到期
- common-lisp - 在 common lisp 中将整数格式化为字符
- asp.net - 验证当前密码的最佳方法是什么?
- android - Activity 和 Fragment 的共享元素过渡不同
- reporting-services - 本地报告处理期间发生错误有效值在“0”和“1”之间