• 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
233 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 (70,700 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 (70,700 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ź 174 wizyt
pytanie zadane 27 września 2018 w C i C++ przez inf123 Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 59 wizyt
pytanie zadane 26 maja 2018 w C i C++ przez Ala123456 Użytkownik (770 p.)
0 głosów
0 odpowiedzi 113 wizyt
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

66,407 zapytań

113,168 odpowiedzi

239,568 komentarzy

46,673 pasjonatów

Przeglądających: 300
Pasjonatów: 4 Gości: 296

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.

...