有人可以帮我一下吗?我很难理解为什么布尔在这里不能按我想要的方式工作。这个想法是当i
(firstnum)为奇数,l
(lastnum)为相等,反之亦然。关于如何使用布尔值的一些帮助也会有所帮助,我无法理解。
输入3和5。
预期输出:4333 4353 4443 4533 4553 5334 5354 5444 5534 5554
实际输出:4333 4353 4443 4533 4553 5333 5334 5353 5354 5443 5444 5533 5534 5553 5554
int startNum = Integer.parseInt(scan.nextLine());
int endNum = Integer.parseInt(scan.nextLine());
boolean isItEqual = false;
boolean isItOdd= false;
int countDebugOperations = 0;
for (int i = startNum; i <=endNum ; i++) {
if (i % 2==0){
isItEqual =true;
}
for (int j = startNum; j <=endNum ; j++) {
for (int k = startNum; k <=endNum ; k++) {
for (int l = startNum; l <=endNum ; l++) {
if (l % 2 == 1){
isItOdd = true;
}
boolean flag =(i > l) && (j+k) % 2 ==0;
if(!isItEqual && (!isItOdd) && flag){
countDebugOperations+=1;
System.out.printf("%d%d%d%d ",i,j,k,l);
}
if (isItEqual && isItOdd && flag) {
countDebugOperations += 1;
System.out.printf("%d%d%d%d ", i, j, k, l);
}
您正试图在两种情况下打印数字i
,j
,k
和l
:
i
为偶数AND l
为奇数时l
为偶数AND i
为奇数时如果将这些情况转换为代码(布尔表达式),则会得到:
i % 2 == 0 && l % 2 == 1
l % 2 == 0 && i % 2 == 1
现在,当我们遍历for
循环时,我们可以询问我们的“数字状态”是否匹配这2种情况之一(第一种情况OR第二种情况)。
int startNum = Integer.parseInt(scan.nextLine());
int endNum = Integer.parseInt(scan.nextLine());
for (int i = startNum; i <= endNum; i++) {
for (int j = startNum; j <= endNum; j++) {
for (int k = startNum; k <= endNum; k++) {
for (int l = startNum; l <= endNum; l++) {
boolean firstCase = i % 2 == 0 && l % 2 == 1;
boolean secondCase = l % 2 == 0 && i % 2 == 1;
// now when we print, we can ask if we are in the first OR the second case
if (firstCase || secondCase) {
System.out.printf("%d%d%d%d ",i,j,k,l);
}
}
}
}
}