Рейтинг:
1
Richard MacCutchan
Существует трудность в печати числа с одним значащим нулем, особенно если вы не знаете, есть ли ноль в числе для начала, и вы не знаете его длину. Самый простой способ сделать это-прочитать число как строку, а затем разбить его на символы и отсортировать символы в алфавитном порядке.
Member 13954890
- эй! Я хочу отсортировать его в порядке убывания.Поскольку я использую примитивный тип данных, я не могу использовать сортировку(arr.Collections.reversedorder).Тогда какова же альтернатива?Вот мой код:
импорт java.lang.*;
импорт java.util.*;
открытый класс sort_string
{
публичный статический пустота главный(строка[] аргументы)
{
//String result = "";
System.out.println("введите строку\n");
Сканер kbd = новый сканер(System.in);
Строковый ввод = kbd.nextLine();
char[] arr=вход.toCharArray();
Массивы.сортировка(ОБР);
Строка отсортирована=новая строка(arr);
Системы.из.код println(по убыванию);
}
}
приведенный выше код работает нормально, но он занимает 0 в первой позиции.Я хочу что-то вроде этого - > вход:936703 выход:303679 так что длина нет. остается то же самое.
Richard MacCutchan
Вам нужно будет написать свой собственный метод для обработки этого случая. В принципе, просто отсортируйте цифры и проверьте, является ли первый символ "0".
Рейтинг:
0
OriginalGriff
Если вы имеете в виду "я хочу ноль в позиции наименее значащей цифры", то попробуйте это сделать:
int digits = log10(num) + 2;
sort = 0;
int temp = num;
while (digits-- > 0)
{
int d = temp % 10;
temp /= 10;
sort = sort * 10 + d;
}
Если вы этого не сделаете, то вам нужно будет объяснить гораздо более подробно!
Member 13954890
Он не сортирует цифры в порядке возрастания.Я хочу отсортировать все цифры "нет". в порядке возрастания.(кроме 0, который всегда должен занимать 2-ю позицию, так что длина нет. остается то же самое)
например, вход: № =692204 выход: 220469
вход: № =790402 выход: 200479
OriginalGriff
Это другое дело: самый простой способ сделать это-выделить массив, достаточно большой, чтобы вместить каждую цифру в отдельный элемент (int или даже просто байт), а затем отделить каждую цифру в отдельный элемент. (Вы можете получить необходимое вам количество элементов с помощью log10(yourNumber) + 1, именно это эффективно делает log10).
Затем вы можете отсортировать отдельные цифры в массиве и распечатать их оттуда.
Более сложный метод состоит в том, чтобы сделать сортировку "в целом", но, честно говоря, это заноза в заднице. Что касается количества цифр в целом, я бы не стал беспокоиться.
Member 13954890
Прости! Я тебя не понимаю.Не могли бы вы помочь мне с кодом? Заранее благодарю вас.
OriginalGriff
Нет, это твоя домашняя работа, а не моя!
В любом случае вы знаете все, что вам нужно для этого. Вы знаете, как извлечь каждую цифру отдельно, я знаю это. И вы знаете, как использовать массивы и как сортировать, не так ли?