亲爱的程序员们,你好:
我有一个字符串 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语句中的运算符。我认为这些运算符的结果是:
&&
运算符: 如果左侧和右侧的操作数都为true,则返回true,否则返回false。
||
运算符: 如果左侧或者右侧的操作数为true,则返回true,否则返回false。
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语句中的逻辑。有人能够解释一下这背后的逻辑吗?我完全困惑了,并感谢每一个帮助我的答案。
问候 Lukas Warsitz