Datei-Inhalt in ein Array?!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datei-Inhalt in ein Array?!

    Hallo erstmal an alle hier im Board!

    Habe ein Problem: in einer Datei stehen zahlen. Diese Zahlen sollen der Größe nach sortiert werden.

    Mein Gedanke war die Anzhal der Zeilen auszulesen. Funktioniert auch. Doch wie bekomme ich die einzelnen Zahlen in ein Array ?!

    Zur Info. Die Datei heißt zahlen.dat und die Einträge stehen in diesem Format:

    41877.2588455
    8775.47451256
    36230.8952162
    28215.4203839
    47498.1885005
    8507.16351304
    92991.2751865
    63451.1315773
    1360.50001398
    47449.0745744
    51642.7134911
    82846.9944918
    48075.1189645
    93104.403052
    59951.9811958
    82406.9132761
    53769.3984386
    31081.0176535
    44614.8631383
    6783.16061268
    41992.2713358
    38987.6246849
    52938.3828283
    41041.5031715
    43889.0284374
    99651.0831324
    17300.7657841
    50123.2675361
    38536.0321357
    82822.4715482
    47481.9453075
    34309.2758304
    84883.6149788
    86051.1125357
    63031.6367732
    25510.6182074
    56429.8189019
    46802.0197388


    Wenn die Zahlen nun hintereinander stehen würden, geht das Auslesen dann genauso ? Bin echt etwas ratlos.
  • mit nextLine() kommst du doch problemlos in die nächste Zeile

    Quellcode

    1. import java.io.*;
    2. import java.util.*;
    3. public class LeseSortiere {
    4. public static void main(String[] args) throws IOException {
    5. //Versuche die Dateioperationen
    6. try {
    7. List a = new ArrayList<Double>();
    8. // Öffne Quelldatei um den Inhalt zu lesen
    9. Scanner sc2 = new Scanner(new File("zahlen.dat"));
    10. //sc2.useLocale() - falls Probleme wegen punkt, komma
    11. while(sc2.hasNextLine()) {
    12. a.add(sc2.nextLine());
    13. }
    14. //Schließe die Datei
    15. sc2.close();
    16. //Sortiere
    17. Collections.sort(a);
    18. Iterator it = a.iterator();
    19. //Ausgabe
    20. while(it.hasNext()) {
    21. System.out.println(it.next());
    22. }
    23. } catch(FileNotFoundException e) {
    24. System.out.println("Fehler: Quelldatei existiert nicht");
    25. System.exit(1);
    26. } catch(Exception e) {
    27. System.out.println("Fehler: Ein unbekannter Fehler ist aufgetreten");
    28. System.exit(1);
    29. }
    30. }
    31. }
    Alles anzeigen
  • Quellcode

    1. String filename="zahl.txt";
    2. File file =new File(filename);
    3. Scanner sc = new Scanner(file);
    4. int zeilen=1;
    5. while(sc.hasNextDouble()) {
    6. sc.next();
    7. zeilen++;
    8. }
    9. System.out.println(+zeilen+ " wurden gezählt");
    10. double[] array=new double[zeilen];
    Alles anzeigen




    ja das ist richtig, man muss zweimal auf die Datei zugreifen. Wie könnte ich denn dieses Array füllen ?
    [edit]keiner eine Idee?[/edit]
  • Ich würde an deiner Stelle nicht zwei mal auf die Datei zugreifen, da es zu lange dauert. Falls du wirklich ein double[] brauchst, schreib die Daten einfach mit einer for-schleife ins Array

    double[] doubleArray[] = new double[it.size()];
    for(int i = 0; it.hasNext; i++)
    doubleArray[i] = it.next();


    Vielleicht geht es sogar mit:
    ArrayList<double> it = new ArrayList<double>();
    .... Auslesen .....
    double doubleArray = it.toArray();

    Da bin ich mir aber nicht sicher. Würd ich erst mal nachlesen[/i]