2013-10-08 5 views
0

Я не могу понять, что здесь не так. В третьем сценарии if (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 
} 

ответ

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) { ... } 
+1

Держите язык в чистоте ... –

+0

также, примите к сведению ответ – tom

Смежные вопросы