【发布时间】:2014-01-01 03:06:06
【问题描述】:
亲爱的程序员,你好,
我有一个字符串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++;
}
}
这两个代码 sn-ps 之间的唯一区别是 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
所以在我看来,第二个代码 sn-p 应该可以工作,而第一个代码应该抛出一个 NumberFormatException。但事实并非如此。
我确信对于我正在做的事情有一些更好的解决方案,但我的问题只是关于我的 if 语句中的逻辑。有人可以解释一下这背后的逻辑吗?我完全困惑并感谢每一个帮助的答案。
问候 卢卡斯·沃西茨
【问题讨论】:
标签: java if-statement operators