2015-05-12 3 views
1

входные 3,5 выход должен быть 3,4,5печати Последовательные числа путем сравнения двух параметров

вход 5,3 выход должен быть 5,4,3

И код

public static void test(int a, int b) { 
     if(a>b) { 
      for (int i = a; i >= b; i--) { 
       System.out.print(i + "\t"); 
      } 
     }else if(a<b) { 
      for (int i = a; i <= b; i++) { 
       System.out.print(i + "\t"); 
      } 
     } 
    } 

Это работает, но выглядит немного грязный. Можно ли обойтись без if else вещь? Только один цикл.

+0

Представляется более подходящим для CodeReview, чем StackOverflow – Dragondraikk

+0

@Deckard - вы можете удалить часть else и добавить 'return' внутри' if' – TheLostMind

+0

Вы не выводите правильный формат; вы указали запятую, но вы выводите вкладки. –

ответ

2

Одно из решений, которые обрабатывать также граничные значения могут быть правильно

public static void test(int start, int end) { 
    int current = start; 
    int stepWidth = current <= end ? +1 : -1; 
    while (current != (end + stepWidth)) { 
     System.out.print(current + "\t"); 
     current += stepWidth; 
    } 
    System.out.println(""); 
} 

редактировать Еще один используя цикл.

public static void test(int start, int end) { 
    int stepWidth = start <= end ? 1 : -1; 
    for (int current = start; current != end + stepWidth; current += stepWidth) { 
     System.out.print(current + "\t"); 
    } 
    System.out.println(""); 
} 

казни

test(3, 5); 
test(5, 3); 
test(Integer.MAX_VALUE - 3, Integer.MAX_VALUE); 
test(Integer.MIN_VALUE, Integer.MIN_VALUE + 3); 

выход

3 4 5 
5 4 3 
2147483644 2147483645 2147483646 2147483647 
-2147483648 -2147483647 -2147483646 -2147483645 
1

Как насчет этой версии?

public static void test(int a, int b) { 
    int d = b > a ? 1 : -1; 
    for (int i = a; i != b; i+=d) { 
     System.out.print(i + "\t"); 
    } 
    System.out.println(b); 
} 
+0

'test (3,5)' prints '3,4' missing 5 – Deckard

+0

Позор мне! Исправлена. –

+0

Простейший и умный, я думаю. – Deckard

0

Это мое решение, обратная связь оценена.

public static void test(int a, int b) { 
      int middle = (a < b) ? (b - 1) : (a - 1); 
      System.out.println(a + "," + middle + ","+b); 
     } 

Выше будет работать только при a! = B.

+0

Я никогда не предназначался только для '3,4,5' или' 5,4,3'. '3,4, ... n',' n, n-1, ... 3' не работает – Deckard

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