Sort Numbers

Здравейте !
На задача за масиви съм,в която искат да се принтира масив с числа,разделени с интервал и запетайка,започвайки от най-голямото към най-малкото. Моля някой да помогне.Опитвам със String,join, но ми изброява числата без интервал и запетайка.
Ето го и моя код: https://pastebin.com/DjMWbdLL
Благодаря предварително !

Оправих се,благодаря

Здравей,

Имай предвид, че методът Collections.reverseOrder() сортира елементите на String масиви по азбучен ред, а не по математически ред, тъй като String масивите не познават числа.

Затова така написан кода, ще дава частично решение и грешки при някои тестове.

За да ползваш Collections.reverseOrder() ефективно, трябва да превърнеш масива в Integer-based. Тоест, след реда с line.split в твоя код, пишем:

Integer[] intArray = new Integer[strArray.length];

Така създаваме празен Integer масив със същия размер като този на нашия String масив. Сега трябва да го напълним с числа:

for (int i = 0; i < strArray.length; i++) {
intArray[i] = Integer.parseInt(strArray[i]);
}

Сега можем да ползваме Arrays.sort върху новия масив.

Оттук нататък можем да представим Integer-масива със запетайки, като прескачаме последния елемент, за да не добави запетайка след него:

for (int i = 0; i < numbers.length - 1; i++) {
System.out.print(intArray[i] + ", ");
}

И после представяме последния елемент допълнително, извън loop-a:

System.out.print(intArray[numbers.length-1]);

Тук не можем да ползваме String join(), защото новият ни масив е Integer.

Успех!

Поздрави,
Петър

6 Likes

Благодаря, Петър !
Винаги помагаш много !