我似乎无法弄清楚这里有什么问题。在第三种情况下,如果(i == n&& i%2 == 0),我只希望它打印16次(如主方法中给出的那样)。但由于一些奇怪的原因,它打印出来3次。有人可以解释为什么???
public class Foursix {
public static void main(String[] args) {
printEven(1,7);
printEven(21,2);
printEven(16,16);
//main
}
public static void printEven(int i, int n) {
System.out.print("[ ");
//n is greater than i
if (i <= n) {
for (int t = i; t <= n; t++) {
if (t % 2 == 0) {
System.out.print(t + " ");
//if statement inner
}
//for loop
}
//if statement outer
}
//i is greater than n
if (i >= n) {
for (int t = i; t >= n; t--) {
if (t % 2 == 0) {
System.out.print(t + " ");
//if statement inner
}
//for loop
}
//if statement outer
}
//i is the same as n
if (i == n && i % 2 == 0) {
System.out.print(i);
//if statement
}
System.out.print("]");
System.out.println();
//printEven
}
//class
}
答案 0 :(得分:4)
你传递的是16,16,所以你if()
条件的所有三个条件都是正确的:
if (i <= n) { 16 <= 16 -> TRUE
if (i >= n) { 16 >= 16 -> TRUE
if (i == n && i % 2 == 0) { 16 == 16 && 16 % 2 -> TRUE
鉴于您明确测试了大于/小于/等于的所有三个,您可能需要这些:
if (i < n) { ... }
else if (i > n) { ... }
else if (i % 2 == 0) { ... }