• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie tablicy Stringów - JAVA

Object Storage Arubacloud
0 głosów
2,600 wizyt
pytanie zadane 29 grudnia 2018 w Java przez msukiennik Początkujący (380 p.)

Witam, prosiłabym o pomoc.

Muszę wczytać plik tekstowy a następnie go posortować. Niestety - nie udaje mi się go posortować, wyświetla się ciągle wczytywana, nieposortowana lista.

Zamieszczam kod:

 File file = new File("/home/marta/Pulpit/KAT_JEE_W_02_Podstawy/a_Zadania/d_Dzien_4/b_Pliki/text2.txt");

        try {
            Scanner scan = new Scanner(file);

            while (scan.hasNextLine()) {
                String scanLine = scan.nextLine().toLowerCase();

                String[] table = scanLine.split(" ");
                Arrays.sort(table);
                System.out.println(Arrays.toString(table));

                }

        } catch (FileNotFoundException e){
            System.out.println(e.getMessage());
        }

Pogrubiony fragment. Czegoś nie dopisałam lub rozpisałam źle? Proszę uprzejmie  o pomoc,

Marta

1 odpowiedź

0 głosów
odpowiedź 29 grudnia 2018 przez mbabane Szeryf (79,280 p.)

Tak raczej tego nie zrobisz dlatego, że to:

String scanLine = scan.nextLine().toLowerCase();

wczytuje Ci jedną linię z pliku, więc tak na prawdę Twój kod sortuje pojedynczą linię pliku.

Mając taki plik:

b c a
h g i
e d f

Twój program wydrukuje:

a b c
g h i
d e f

Musisz najpierw wczytać cały plik do jakiejś listy i posortować tę listę. I wtedy wynikiem będzie posortowany cały plik.

komentarz 29 grudnia 2018 przez msukiennik Początkujący (380 p.)
Ale wcześniej utworzyłam pętlemówiącą, że do momentu kiedy istniejenastęna linia to skanuj plik. Dalej zrobiłam z tego pliku tablicę... więc wydawało mi się, żetątablicę metoda srot posortuje. Muszę najpierw zeskanować cały plik, później zrobić listę i tą listę posortować... czyli podobnie co miałam na myśli tylko pracować na liście hmmmm
komentarz 29 grudnia 2018 przez mbabane Szeryf (79,280 p.)

Na liście, ponieważ nie da się przewidzieć jak duży będzie plik. W związku z tym zwykła tablica się nie nadaje, bo ona musi mieć z góry znaną liczbę elementów. Dlatego trzeba zastosować jakąś dynamiczną strukturę danych.

A samo sortowanie masz w zasadzie dokładnie tak samo bo:

Collections.sort( list );

Dodatkowo wykorzystując elementy z java.nio możesz za pomocą jednej linii wczytać cały plik własnie do javowej listy (bez używania Scannera i pętli while).

Podobne pytania

+1 głos
1 odpowiedź 3,548 wizyt
pytanie zadane 27 września 2018 w C i C++ przez inf123 Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 214 wizyt
pytanie zadane 26 maja 2018 w C i C++ przez Ala123456 Użytkownik (760 p.)
0 głosów
0 odpowiedzi 449 wizyt

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...