两个if语句 - 一个不起作用

时间:2013-10-08 14:55:59

标签: if-statement

打印偶数时遇到问题。如果我将参数设为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
}

3 个答案:

答案 0 :(得分: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循环,因此在进行更改时不必更改代码两次。如果循环内部有复杂的逻辑,这将非常方便。

答案 1 :(得分: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
  }

答案 2 :(得分:0)

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

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