如果声明和印刷太多

时间:2013-10-08 15:57:28

标签: java if-statement

我似乎无法弄清楚这里有什么问题。在第三种情况下,如果(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
}

1 个答案:

答案 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) { ... }