0

ここで何が悪いのか理解できないようです。3 番目のシナリオ if (i == n && i % 2 == 0) では、(メイン メソッドで指定されているように) 16 を 1 回だけ出力する必要があります。しかし、何らかの奇妙な理由で、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

1 に答える 1

4

16,16 を渡しているので、3 つのif()条件はすべて TRUE です。

  if (i <= n) {    16 <= 16 -> TRUE
  if (i >= n) {    16 >= 16 -> TRUE
  if (i == n && i % 2 == 0) {   16 == 16 && 16 % 2  -> TRUE

大なり/小なり/等しいの 3 つすべてを明示的にテストしていることを考えると、おそらくこれらが必要です。

 if (i < n) { ... }
 else if (i > n) { ... }
 else if (i % 2 == 0) { ... }
于 2013-10-08T16:00:43.157 に答える