Seřazení knižních publikací – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Seřazení knižních publikací – Java – Fórum – Programujte.comSeřazení knižních publikací – Java – Fórum – Programujte.com

 

Aneta
~ Anonymní uživatel
5 příspěvků
7. 2. 2020   #1
-
0
-

Ahoj, potřebovala bych prosím poradit.

Dostala jsem ve škole za úkol seřadit knižní publikace podle vydání chronologicky. Jsou zadány například takto 02-02,2-03,1-4.

Nevíte, jak mám nejlépe postupovat, aby program věděl, že 1-4 je ve skutečnosti 01-04 a dal mi toto vydání na první místo?

Děkuji

Nahlásit jako SPAM
IP: 2a02:8309:a8bf:3e00:48d7:1a06:464e:9884...–
gna
~ Anonymní uživatel
1891 příspěvků
7. 2. 2020   #2
-
0
-

Funkce pro řazení umožňují zadat vlastní Comparator, kterým se jednotlivé prvky budou porovnávat. V něm si porovnání můžeš implementovat podle svých potřeb. Třeba jako převod stringů na čísla, která porovnáš.

Nahlásit jako SPAM
IP: 213.211.51.–
Aneta
~ Anonymní uživatel
5 příspěvků
7. 2. 2020   #3
-
0
-

Zkoušela jsem přetypovat takto, ale neběží to :(

String[] publ = {"0202","203","14"}; 
int[] values = new int[publ.length];

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

Nahlásit jako SPAM
IP: 2a02:8309:a8bf:3e00:48d7:1a06:464e:9884...–
gna
~ Anonymní uživatel
1891 příspěvků
7. 2. 2020   #4
-
0
-

Takže ti to nevygeneruje 202, 203, 14?

Nahlásit jako SPAM
IP: 213.211.51.–
Aneta
~ Anonymní uživatel
5 příspěvků
8. 2. 2020   #5
-
0
-

Bohužel ne. Vygeneruje to chybovou hlášku:

Exception in thread "main" java.lang.NumberFormatException: For input string: "02-02" atd.

Nahlásit jako SPAM
IP: 2a02:8309:a8bf:3e00:48d7:1a06:464e:9884...–
Aneta
~ Anonymní uživatel
5 příspěvků
8. 2. 2020   #6
-
0
-

Zkoušela jsem i přes replaceAll("-"," ")  odstranit pomlčky a nic. Následně i bez mezer, aby se odstranily bílé znaky, ale pořád to vyhazuje stejnou chybu.

Nahlásit jako SPAM
IP: 2a02:8309:a8bf:3e00:104a:7611:bdaf:46e8...–
gna
~ Anonymní uživatel
1891 příspěvků
8. 2. 2020   #7
-
0
-

S pomlčkami to není číslo a bez pomlček to není číslo. Ale ty nechceš jen odstranit pomlčky, protože pak nerozlišíš "1-02" a "10-2".

String[] publ = {"02-02", "2-03", "1-4"}; // "mm-dd"
System.out.println(Arrays.toString(publ));

Arrays.sort(publ, new Comparator<String>(){
    @Override
    public int compare(String s1, String s2) {
        String[] a1 = s1.split("-");
        String[] a2 = s2.split("-");
        int x = Integer.parseInt(a1[0]); // mm
        int y = Integer.parseInt(a2[0]);
        if (x == y) {
            x = Integer.parseInt(a1[1]); // dd
            y = Integer.parseInt(a2[1]);
        }
        return x - y;
    }
});
System.out.println(Arrays.toString(publ));
[02-02, 2-03, 1-4]
[1-4, 02-02, 2-03]

Samozřejmě nejlepší by bylo to od začátku mít v nějakém normalizovaném/porovnávatelném formátu, než to konvertovat při řazení.

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1891 příspěvků
8. 2. 2020   #8
-
0
-

S pomlčkami to není číslo a bez pomlček to není číslo.

S pomlčkami to není číslo a bez pomlček to nemůže házet chyby.

Nahlásit jako SPAM
IP: 213.211.51.–
Aneta
~ Anonymní uživatel
5 příspěvků
9. 2. 2020   #9
-
0
-

Super, moc děkuju :)

Nahlásit jako SPAM
IP: 89.24.43.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Seřazení — založil Jakub656

Seřazení v seznamu — založil Jakub Vojáček

Seřazení polí — založil soudruh

Seřazení "metody" — založil antybart

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý