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

Sortowanie tablicy Stringów - JAVA

0 głosów
172 wizyt
pytanie zadane 29 grudnia 2018 w Java przez msukiennik Początkujący (360 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 Maniak (68,640 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 (360 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 Maniak (68,640 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ź 152 wizyt
pytanie zadane 27 września 2018 w C i C++ przez inf123 Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 56 wizyt
pytanie zadane 26 maja 2018 w C i C++ przez Ala123456 Użytkownik (770 p.)
0 głosów
0 odpowiedzi 101 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

64,071 zapytań

110,467 odpowiedzi

231,380 komentarzy

47,836 pasjonatów

Przeglądających: 216
Pasjonatów: 10 Gości: 206

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...