Luk*_*itz 5 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++;
}
}
Run Code Online (Sandbox Code Playgroud)
这是不起作用的代码:
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++;
}
}
Run Code Online (Sandbox Code Playgroud)
这两个代码片段之间的唯一区别是if子句中的运算符.
我认为这些运营商的结果是:
&& 运营商:
false + false = false
true + false = false
false + true = false
true + true = true
Run Code Online (Sandbox Code Playgroud)
|| 运营商:
false + false = false
true + false = true
false + true = true
true + true = true
Run Code Online (Sandbox Code Playgroud)
所以在我看来第二个代码片段应该工作,第一个应该抛出一个NumberFormatException.但事实并非如此.
我确信对于我正在做的事情有一些更好的解决方案,但我的问题只是关于我的if语句中的逻辑.有人能解释一下这背后的逻辑吗?我完全感到困惑,并感谢每一个有帮助的答案.
问候Lukas Warsitz
在第二个片段中,if子句将始终为true,因为它i始终不是2或不是5(因为它不能同时为2和5)
对于你想要做的事情,你的第一个片段很好,它完全符合你的要求:如果你不是第三个元素,也不是第6个元素,你想要解析,否则你就是日期中的一个点.