My code works without any problem ... but I keep getting error messages. Pleas help.
Please copy my code to Intelijii Idea and see that it works.
package pl.codegym.task.task09.task0930;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
/*
Zadanie z algorytmami WOW i get it !!!!!! udłao się !!!!!!! :)
long code but i figure outed it :)
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> lista = new ArrayList<String>();
while (true) {
String s = reader.readLine();
if (s.isEmpty()) {
break;
}
lista.add(s);
}
String[] tablica = lista.toArray(new String[lista.size()]);
tablica = sortuj(tablica);
for (String x : tablica) {
System.out.println(x);
}
}
public static String[] sortuj(String[] tablica) { // my lovely spaghetti code :)
// tutaj wpisz swój kod
String[] result = new String[tablica.length];
HashMap <Integer, Integer> integerHashMap = new HashMap<>();
HashMap <Integer, String > stringHashMap = new HashMap<>();
ArrayList<Integer> integersList = new ArrayList<>();
ArrayList<String> stringList = new ArrayList<>();
for (int i = 0; i < tablica.length; i++){ // loop for memory index in tab
if (isLiczba(tablica[i])){
integerHashMap.put(i, Integer.parseInt(tablica[i]));
integersList.add(Integer.parseInt(tablica[i]));
} else {
stringHashMap.put(i, tablica[i]);
stringList.add(tablica[i]);
}
}
Collections.sort(integersList, (x, y) -> { // wyrazenie lambda ---- sortowanie integerów malejąco
return y - x;
});
String[] stringsTab = stringList.toArray(new String[stringList.size()]); // zamiana array na prosta tablice
for (int i = 1; i < stringsTab.length;i++){ // sortowanie stringów - string sorting method
String a = stringsTab[i];
String b = stringsTab[i - 1];
if (isWiekszeOd(a, b)) {
stringsTab[i] = a;
stringsTab[i - 1] = b;
} else {
stringsTab[i] = b;
stringsTab[i - 1] = a;
}
for (int j = 1; j < stringsTab.length; j++) {
String c = stringsTab[j];
String d = stringsTab[j - 1];
if (isWiekszeOd(c, d)) {
stringsTab[j] = c;
stringsTab[j - 1] = d;
} else {
stringsTab[j] = d;
stringsTab[j - 1] = c;
}
}
}
stringList.clear();
// skopiowanie tablicy do listy - copying an array to a list
for (String s: stringsTab
) {
stringList.add(s);
}
// iterator żeby wydobyć tylko isniejące obiekty
Iterator iteratorInts = integersList.iterator();
for (Map.Entry <Integer, Integer> para: integerHashMap.entrySet()
) {
int x = para.getKey();
result[x] = String.valueOf(iteratorInts.next());
}
Iterator iteratorStrings = stringList.iterator();
for (Map.Entry<Integer, String> para: stringHashMap.entrySet()
) {
int x = para.getKey();
result[x] = (String) iteratorStrings.next();
}
return result;
}
// Metoda porównywania ciągów: 'a' jest większe niż 'b'
public static boolean isWiekszeOd(String a, String b) {
return a.compareTo(b) > 0;
}
// Czy przekazywany ciąg jest liczbą?
public static boolean isLiczba(String s) {
if (s.length() == 0) {
return false;
}
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if (i != 0 && c == '-') { // Ciąg zawiera łącznik
return false;
}
if (!Character.isDigit(c) && c != '-') { // lub nie jest liczbą i nie zaczyna się łącznikiem
return false;
}
if (i == 0 && c == '-' && chars.length == 1) { // lub jest pojedynczym łącznikiem
return false;
}
}
return true;
}
}