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




Вы можете сделать что-то вроде этого, чтобы распечатать числа по порядку:
// 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]);
}
import java.util.Arrays; для Arrays.sort ()
Странный. Не было в списке быстрых исправлений. Спасибо
Да, мужик, без проблем, если ты думаешь, что это правильный ответ, ты не возражаешь поставить зеленую галочку в качестве ответа на этот вопрос? Всего хорошего!
Конечно, сделаю, но, похоже, не решаю Array ... Eclipse сломан или что-то в этом роде?
попробуйте массивы с 's'
Ага, работает с буквой s! Могу однозначно сказать, что мой мозг устал, потому что я этого даже не заметил!
НО: С вашим решением результат будет другим. Я пробовал с x = 5, y = 3 и z = 6. У меня 210 вместо 653. Решение @Elliot Frisch отлично работает
Вы можете найти максимум при последовательных звонках на 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 или списке, повторяющем элементы. Это решение кажется лучшим. Дай мне проверить, я вернусь к тебе
Кстати: для чего используется% d? Думаю, это должен быть побег или что-то в этом роде?
@esQmo_ %d%d%d определяет формат трех десятичных целочисленных значений, а %n - это новая строка. См. Также Formatter JavaDoc.
О, спасибо вам большое.
Что-то вроде этого сработает
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).
Я не уверен, что вы имеете в виду, он работает с числами от 0 до любого 10-значного числа
О, просто возьмите ввод, а затем добавьте его в алгоритм сортировки, такой как быстрая сортировка
Моя основная потребность - сделать наибольшие числа из цифр, поэтому, если у меня есть 1000, 100 и 10, должно быть 11100000, так как оно больше 100010010 (я думаю?). В любом случае ваше решение отлично работает. Хотел бы я принять их все
ох, Quicksort ... никогда не слышал .. Сделаю поиск и выясню, что это
О, кстати, как мне перезапустить консоль, когда результат найден, вместо того, чтобы снова запускать программу?
Вы можете поместить весь код в цикл while, и пока он истинен, он просто продолжает работать. Вам просто нужно иметь условие, вызывающее разрыв, или создать логическую переменную и в какой-то момент изменить ее на false. Или вы можете просто выйти из программы.
Решение с использованием 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));
Рад снова вас видеть. Это решение кажется более простым
Если можно использовать потоки
Я на самом деле пытаюсь перенести алгоритм поиска пути, который вы написали, на Android, но я не застрял. Не могли бы вы взглянуть?
Конечно. Опубликуйте и оставьте комментарий
Спасибо за Ваш ответ. Что мне следует импортировать, чтобы разрешить тип
Array?java.lang.sqlилиjava.lang.reflect? Кажется, что ни одно из вышеперечисленных не решит проблемуsort. Я использую Eclipse.