0

我在打印偶数时遇到问题。如果我将参数设置为 1,7,它会打印出 (2,4,6) 之间的偶数,这正是我想要的。当 int i 大于 int n 时,我希望它以递减的方式打印出来,但 if 语句根本不执行。我不知道是什么问题???

public class Problem {

public static void main(String[] args) {
  printEven(1,7);
  printEven(21, 15);
//main
}

  public static void printEven(int i, int n) {

  System.out.print("[ ");
  //if 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
  }
  //if i is greater than n
  if (i >= n) {
     for (int t = n; t >= i; t--) {
        if (t % 2 == 0) {
           System.out.print(t + " ");
        //if statement inner
        }
     //for loop
     }
  //if statement outer
  }
  System.out.print("]");
  System.out.println();  
//printEven
}

//class
}
4

3 回答 3

1

除了其他人已经指出的,我建议写一些类似的东西

int begin = (i < n)? i:  n;
int   end = (i < n)? n:  i;
int  step = (i < n)? 1: -1;
for (int t = begin; step*t < step*end + 1; t += step)
{ 
    /*...*/
}

而不是有两个 for 循环,这样您在进行更改时就不必更改代码两次。如果您在循环内部有复杂的逻辑,这将很方便。

于 2013-10-08T15:25:19.107 回答
0

问题出在一线

for (int t = n; t >= i; t--) {  

将其更改为:

   for (int t = i; t >= n; t--) {    //this is how it should be   

所以,你的代码应该是这样的。

if (i >= n) {
     //for (int t = n; t >= i; t--) {  // **this is wrong code.**
       for (int t = i; t >= n; t--) {    //this is how it should be
        if (t % 2 == 0) {
           System.out.print(t + " ");
        //if statement inner
        }
     //for loop
     }
  //if statement outer
  }
于 2013-10-08T15:02:13.730 回答
0

改变: for (int t = n; t >= i; t--)

至: for (int t = i; t >= n; t--)

于 2013-10-08T15:04:15.483 回答