你好亲爱的程序员,
我有一个字符串 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/