Вывести наибольшее число из заданных цифр - Java

Сначала я прошу прощения, если мой вопрос кажется неясным.

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

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 в качестве окончательного результата? Я знаю, что здесь требуется некоторая логика, но мой мозг, кажется, не производит ее.

Ваша помощь очень ценится.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
1 329
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

// 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]);
}

Спасибо за Ваш ответ. Что мне следует импортировать, чтобы разрешить тип Array? java.lang.sql или java.lang.reflect? Кажется, что ни одно из вышеперечисленных не решит проблему sort. Я использую Eclipse.

esQmo_ 27.06.2018 00:51

import java.util.Arrays; для Arrays.sort ()

dave 27.06.2018 00:51

Странный. Не было в списке быстрых исправлений. Спасибо

esQmo_ 27.06.2018 00:52

Да, мужик, без проблем, если ты думаешь, что это правильный ответ, ты не возражаешь поставить зеленую галочку в качестве ответа на этот вопрос? Всего хорошего!

dave 27.06.2018 00:54

Конечно, сделаю, но, похоже, не решаю Array ... Eclipse сломан или что-то в этом роде?

esQmo_ 27.06.2018 00:55

попробуйте массивы с 's'

dave 27.06.2018 00:55

Ага, работает с буквой s! Могу однозначно сказать, что мой мозг устал, потому что я этого даже не заметил!

esQmo_ 27.06.2018 00:57

НО: С вашим решением результат будет другим. Я пробовал с x = 5, y = 3 и z = 6. У меня 210 вместо 653. Решение @Elliot Frisch отлично работает

esQmo_ 27.06.2018 01:02

Вы можете найти максимум при последовательных звонках на 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);

Спасибо; Я думал о каскадных операторах if или списке, повторяющем элементы. Это решение кажется лучшим. Дай мне проверить, я вернусь к тебе

esQmo_ 27.06.2018 00:35

Кстати: для чего используется% d? Думаю, это должен быть побег или что-то в этом роде?

esQmo_ 27.06.2018 01:09

@esQmo_ %d%d%d определяет формат трех десятичных целочисленных значений, а %n - это новая строка. См. Также Formatter JavaDoc.

Elliott Frisch 27.06.2018 01:15

О, спасибо вам большое.

esQmo_ 27.06.2018 01:18

Что-то вроде этого сработает

    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 - 9). С числами поведение отличается. (пример 10, 100, 100 выведет 100010010, что правильно, но я хотел бы иметь возможность вывести 111000000, я даже не знаю, имеет ли это смысл, хотя lol).

esQmo_ 27.06.2018 02:04

Я не уверен, что вы имеете в виду, он работает с числами от 0 до любого 10-значного числа

MuffsEZ 27.06.2018 02:08

О, просто возьмите ввод, а затем добавьте его в алгоритм сортировки, такой как быстрая сортировка

MuffsEZ 27.06.2018 02:10

Моя основная потребность - сделать наибольшие числа из цифр, поэтому, если у меня есть 1000, 100 и 10, должно быть 11100000, так как оно больше 100010010 (я думаю?). В любом случае ваше решение отлично работает. Хотел бы я принять их все

esQmo_ 27.06.2018 02:11

ох, Quicksort ... никогда не слышал .. Сделаю поиск и выясню, что это

esQmo_ 27.06.2018 02:12

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

esQmo_ 27.06.2018 02:21

Вы можете поместить весь код в цикл while, и пока он истинен, он просто продолжает работать. Вам просто нужно иметь условие, вызывающее разрыв, или создать логическую переменную и в какой-то момент изменить ее на false. Или вы можете просто выйти из программы.

MuffsEZ 27.06.2018 02:50
Ответ принят как подходящий

Решение с использованием 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));

Рад снова вас видеть. Это решение кажется более простым

esQmo_ 12.08.2018 13:50

Если можно использовать потоки

c0der 12.08.2018 13:50

Я на самом деле пытаюсь перенести алгоритм поиска пути, который вы написали, на Android, но я не застрял. Не могли бы вы взглянуть?

esQmo_ 12.08.2018 13:54

Конечно. Опубликуйте и оставьте комментарий

c0der 12.08.2018 13:58

Другие вопросы по теме