Вывести наибольшее число из заданных цифр - Java - PullRequest
0 голосов
/ 27 июня 2018

Сначала я хотел бы извиниться, если мой вопрос кажется неясным.

Я хочу, чтобы вывод был максимально возможным числом из пользовательского ввода. Пример:

input: x = 0; y = 9; z = 5;
output: 950

Я пробовал что-то вроде приведенного ниже кода.

import java.util.Scanner;

    class LargestOfThreeNumbers{
       public static void main(String args[]){
          int x, y, z;
          System.out.println("Enter three integers ");
          Scanner in = new Scanner(System.in);

          x = in.nextInt();
          y = in.nextInt();
          z = in.nextInt();

          if ( x > y && x > z )
             System.out.println("First number is largest.");
          else if ( y > x && y > z )
             System.out.println("Second number is largest.");
          else if ( z > x && z > y )
             System.out.println("Third number is largest.");
       }
    }

Код выше напечатает что-то вроде: The seconde number is largest. Это правильно, как я определяю условные утверждения. Но как мне получить 950 как конечный результат? Я знаю, что здесь требуется некоторая логика, но мой мозг, похоже, не производит ее.

Ваша помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 12 августа 2018

Решение с использованием Java 8 IntStream :

    int x = 0, y = 9, z = 5;
    IntStream.of(x,y,z).boxed().sorted( (i1,i2) -> Integer.compare(i2, i1)).forEach( i -> System.out.print(i));
0 голосов
/ 27 июня 2018

Вы можете найти максимум при последовательных вызовах на Math.max(int, int) и минимум при вызовах на Math.min(int, int). Первое число - max. Последний min. И оставшийся член может быть определен с добавлением трех членов и затем вычитанием из min и max (x + y + z - max - min). Как,

int max = Math.max(Math.max(x, y), z), min = Math.min(Math.min(x, y), z);
System.out.printf("%d%d%d%n", max, x + y + z - max - min, min);
0 голосов
/ 27 июня 2018

Примерно так будет работать

    ArrayList<Integer> myList = new ArrayList<Integer>();
    Scanner val = new Scanner(System.in);
    int x = 0;
    for (int i = 0; i < 3; i++) {
        System.out.println("Enter a value");
        x = val.nextInt();
        myList.add(x);
    }
    myList.sort(null);
    String answer = "";
    for (int i = myList.size() - 1; i >= 0; i--) {
        answer += myList.get(i).toString();
    }
    System.out.println(answer);
  }
0 голосов
/ 27 июня 2018

Вы можете сделать что-то вроде этого, чтобы напечатать числа в следующем порядке:

// make an array of type integer
int[] arrayOfInt = new int[]{x,y,z};
// use the default sort to sort the array
Arrays.sort(arrayOfInt);
// loop backwards since it sorts in ascending order
for (int i = 2; i > -1; i--) {
    System.out.print(arrayOfInt[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...