Номера в порядке возрастания в Java

1

Как создать java-программу, используя только if/else для заказа 5 номеров в порядке возрастания. Я не могу использовать для процессов или массива. Числа вводятся пользователем My code...

public static void main(String[] args) {
    int a=0;
    int b=0;
    int c=0;
    int d=0;
    int e=0;
    int lugar1=0; 
    int lugar2=0;
    int lugar3=0;
    int lugar4=0;
    int lugar5=0;

    Scanner sc = new Scanner (System.in);
    System.out.println("Enter first number");
    a = sc.nextInt();
    System.out.println("Enter second number");
    b = sc.nextInt();
    System.out.println("Enter third number");
    c = sc.nextInt();
    System.out.println("Enter fourth number");
    d = sc.nextInt();
    System.out.println("Enter fifth number");
    e = sc.nextInt();

    if(a>b&&a>c&&a>d&&a>e)
    {
        lugar1=a;
    }
    else {
        if (b>c&&b>d&&b>e&&b>a)
        {
        lugar1=b;
        }
        else {
            if (c>d&&c>e&&c>a&&c>b)
            {
            lugar1=c;
            }
            else {
                if (d>e&&d>a&&d>b&&d>c)
                {
                lugar1=d;
                }
                else 
                {
                lugar1=e;
                }
            }
        }        
    }

    if(a<b&&a<c&&a<d&&a<e)
    {
        lugar5=a;
    }
    else {
        if (b<c&&b<d&&b<e&&b<a)
        {
        lugar5=b;
        }
        else {
            if (c<d&&c<e&&c<a&&c<b)
            {
            lugar5=c;
            }
            else {
                if (d<e&&d<a&&d<b&&d<c)
                {
                lugar5=d;
                }
                else 
                {
                lugar5=e;
                }
            }
        }        
    }


    System.out.println(lugar1);

    System.out.println(lugar5);
}

Я не делаю этого снова, у меня есть только 1 и 5

  • 0
    «Я снова не буду ходить, у меня только 1 и 5», что? Вы печатаете только lugar1 и lugar5 . System.out.println(lugar1); System.out.println(lugar5);
  • 0
    Если количество сравнений ограничено, то ваш метод грубой силы должен работать. Что ты имеешь в виду под "я больше не буду ходить"?
Показать ещё 4 комментария
Теги:
if-statement

3 ответа

1
Лучший ответ

ОК. Я укусил пулю и набрал все. Нет циклов, нет массивов, нет ничего.

Основная идея - сохранить упорядоченный порядок.

import java.util.Scanner;


public class Sort5 {

    static int a1 = Integer.MIN_VALUE, a2 = Integer.MIN_VALUE, a3 = Integer.MIN_VALUE, a4 = Integer.MIN_VALUE, a5 = Integer.MIN_VALUE;


    public static void placeNext(int aNew) {
        if (aNew > a5) {
            a1 = a2;
            a2 = a3;
            a3 = a4;
            a4 = a5;    
            a5 = aNew;
        } else {
            if (aNew > a4) {
                a1 = a2;
                a2 = a3;
                a3 = a4;
                a4 = aNew;
            } else {
                if (aNew > a3) {
                    a1 = a2;
                    a2 = a3;
                    a3 = aNew;
                } else {
                    if (aNew > a2) {
                        a1 = a2;
                        a2 = aNew;
                    } else {
                        a1 = aNew;
                    }
                }
            }
        }
    }



    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        placeNext(sc.nextInt());
        placeNext(sc.nextInt());
        placeNext(sc.nextInt());
        placeNext(sc.nextInt());
        placeNext(sc.nextInt());

        System.out.println("" + a1 + " | " + a2 + " | " + a3 + " | " + a4 + " | " + a5);
    }

}

Если я не сделал опечатку, то где-то должно работать на любые 5 int.

  • 0
    Очень хорошо, вы код его чистый!
2

Ваши ограничения не исключают использование списков. См. Как сортировать ArrayList в Java?

Если вы также не можете использовать списки, я предлагаю использовать Math.min, http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html, что позволит вам определить какой из них является следующим минимумом...

Создайте функцию для печати следующего наименьшего.

private void printNextSmallest() {
  int min = Math.min(Math.min(Math.min(a,b), Math.min(c,d)),e);
  if (min == Integer.MAX) {return;}
  else if (a == min) { System.out.println(a + " "); printNextSmallest(Integer.MAX, b, c, d,e);}
  //..
  else if (e == min) { System.out.println(e + " "); printNextSmallest(a, b, c, d, Integer.MAX);
}
  • 1
    Его ограничения не исключают реализацию этого как веб-сервиса и подключение к нему. Я не думаю, что в этом смысл упражнения. Я имею в виду, что ограничения не являются исчерпывающими, но его цель ясна: используйте только if/else
  • 0
    @DSquare Как это может быть реализовано, так как у меня уже есть максимум "lugar1" и минимум "lugar5" только с if / else, попробуйте различные комбинации и ничего не удалось найти
0

Используйте следующие методы:

public int getSmallestInt(int... ints) {
    int smallest = Integer.MAX_VALUE;
    for (int i : ints) {
        smallest = Math.min(smallest, i);
    }
    return smallest;
}

public int getLargestInt(int... ints) {
    int largest = Integer.MAX_VALUE;
    for (int i : ints) {
        largest = Max.max(largest, i);
    }
    return largest;
}

или сортировать:

public static void main(String[] args) {
    List<Integer> ints = new Test().sort(5, 1, 2);
    System.out.println(ints.get(0)); //-> 1
}
public List<Integer> sort(Integer... ints) {
    List<Integer> l = Arrays.asList(ints);
    Collections.sort(l);
    return l;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню