Wczytywanie danych z pliku do tablicy

Odpowiedz Nowy wątek
2018-11-03 09:05
0

Witam mam problem z wczytaniem danych z pliku do tablicy. Aktualnie doszedłem do etapu w którym dane są wczytywane, lecz nie wykonuje się sortowanie na danych.

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class Bombelkowe {
    private static void b_sort(int tab[]){
        int temp;
        int zmiana = 1;
        while(zmiana > 0){
        zmiana = 0;
        for(int i=0; i<tab.length-1; i++){
        if(tab[i]>tab[i+1]){
        temp = tab[i+1];
        tab[i+1] = tab[i];
        tab[i] = temp;
        zmiana++;
                           }
                  }
        }
        for(int i=0; i<tab.length; i++){
        System.out.print(tab[i]+" ");
                     }
        }

    public static void main(String[] args) throws FileNotFoundException {
        File plik = new File("Ja.txt");
        Scanner odczyt = new Scanner(plik);
        while(odczyt.hasNextLine()) {
            String tekst=odczyt.nextLine();
            int liczba=Integer.parseInt(tekst);
            int[] ja=new int[1];
            for(int i=0;i<ja.length;i++) {
                ja[i]=liczba;
                   }
            b_sort(ja);

        }

    }   
}

Pozostało 580 znaków

2018-11-03 09:56
0

NIe sortuje bo do metody b_sort przekazujesz zawsze tablicę z jednym elementem i ją wyświetlasz.

Przy zmianie ilości elementów na 10 wyświetla mi 10*element. Chyba że wcześniej jest błąd - Gatusso987 2018-11-03 10:08

Pozostało 580 znaków

2018-11-03 13:00

Ale Żeś Namieszał w tym programie:), tak to ma wyglądać(zmieniłem tylko na funkcję zwracającą wartość):

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Arrays;

public class Main {
    private static int[] b_sort(int tab[]){
        int temp;
        int zmiana = 1;
        while(zmiana > 0){
        zmiana = 0;
            for(int i=0; i<tab.length-1; i++){
                if(tab[i]>tab[i+1]){
                    temp = tab[i+1];
                    tab[i+1] = tab[i];
                    tab[i] = temp;
                    zmiana++;
                 }
             }
        }

         return tab;
    }

    public static void main(String[] args) throws FileNotFoundException {
        File plik = new File("numbers.txt");
        Scanner odczyt = new Scanner(plik);
        int[] ja=new int[10];
        int i = 0;
        while(odczyt.hasNextLine()) {
            String tekst=odczyt.nextLine();
            int liczba=Integer.parseInt(tekst);
            ja[i]=liczba;
            i += 1;
         }

        System.out.println(Arrays.toString(ja) + " <- before sort");
        ja = b_sort(ja);
        System.out.print(Arrays.toString(ja) + " <- after sort");
        }
} 

Wiem namieszałem dopiero zaczynam z programowaniem. Dzięki - Gatusso987 2018-11-03 16:51
Tak źle Ci nie poszło:) input zrobiłeś ładnie, tylko ta pętla for w środku to był jakiś blind spot:). Funkcja, lepiej żeby zwracała wartość - ograniczanie "side effects" ułatwia debugowanie i poprawia czytelność. - lion137 2018-11-03 17:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0