java - Java 运算符 && 和 || 的逻辑

标签 java if-statement operators

你好亲爱的程序员,

我有一个字符串 String input = "30.09.1993"; 然后我想将这个字符串中的所有数字保存在一个数组中(只有数字!)。这 ”。”位于索引 2 和 5,所以我想使用 if 语句在循环中跳过字符串的这些部分。

我解决了我的问题并且一切正常,但我对 &&|| 运算符的逻辑感到困惑。

这是我的工作代码:

String input = "30.09.1993";
int[] eachNumbers = new int[8];

int x = 0;
for(int i = 0; i <= 9; i++){
    if(i != 2 && i != 5){
       eachNumbers[x] = Integer.parseInt(input.substring(i, i+1));
       x++;
    }
}

这是不起作用的代码:

String input = "30.09.1993";
int[] eachNumbers = new int[8];

int x = 0;
for(int i = 0; i <= 9; i++){
    if(i != 2 || i != 5){
       eachNumbers[x] = Integer.parseInt(input.substring(i, i+1));
       x++;
    }
}

这两个代码片段之间的唯一区别是 if 子句中的运算符。

我认为这些运算符的结果是:

&& 运算符:

false + false = false
true  + false = false
false + true  = false
true  + true  = true

|| 运算符:

false + false = false
true  + false = true
false + true  = true
true  + true  = true

所以在我看来,第二个代码片段应该可以工作,而第一个代码片段应该抛出一个 NumberFormatException。但事实并非如此。

我确信我正在做的事情有一些更好的解决方案,但我的问题只是关于我的 if 语句中的逻辑。有人可以向我解释这背后的逻辑吗?我对每一个有帮助的答案都感到非常困惑和感激。

问候语 卢卡斯·瓦尔西茨

最佳答案

在第二个片段中,if 子句将始终为真,因为 i 将始终不是 2 或不是 5(因为它不能同时为 2 和 5)

对于您想执行的操作,您的第一个代码段很好,它完全符合您的要求:如果您不在第三个元素处,也不在第 6 个元素处,您想要解析,否则您处于其中一个点在日期。

关于java - Java 运算符 && 和 || 的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564933/

相关文章:

php - 如果未找到 array_search 查询

java - 尝试在使用 if/else 的同时实现评分系统。 [JAVA]

c - while(scanf ("%d",&n),n) 是什么意思?

java - 获取输入的方式是什么

java - HSQL连接异常,连接不存在

java - Reactive Spring 不支持 ServerHttpRequest 作为 REST 端点测试中的参数?

c# - C# 中的 IS NOT 运算符

java - JSF - 为受限页面实现过滤器

c++ - 请协助 : "if" statement in C++

c - += 在 Visual C 中必须是左值