2013-10-08 30 views
0

我打印偶数时遇到问题。如果我把参数设置为1,7,它会打印出(2,4,6)之间的偶数,这正是我的意图。当int i大于int n时,我希望它以递减的方式打印出来,但是if语句根本没有执行。我无法弄清楚问题是什么?两个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 
} 
+1

我假设这是Java。如果是这样,请编辑您的问题并添加“java”标签。 –

回答

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 
    } 
+0

太近了!谢谢;) – Rasmus

+0

是啊。厕所。单击所选答案上的复选框以接受其中一个答案。 – Andromeda

0

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

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

+0

太近了!谢谢 ;) – Rasmus

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-loop,所以你不会h在做更改时两次更改您的代码。如果你在循环内部有复杂的逻辑,这将会很方便。