Auf Thema antworten

Danke. Ist wirklich deutlich einfacher :) Ich will aber noch versuchen mein Programm fertig zu bekommen. Ist ja auch gleich mit eine Übung :) Dann gibt es eine Variante ohne zusätzliche Bibliothek und eine mit ;D


Kann das sein, dass die Methode [c]hashMap.put(key, value)[/c] die Werte nicht hintereinander listet?

Hab das Programm mal so umgeschrieben, um es mal per HashMap auszuprobieren und die Datei erstmal nur zu kopieren ohne Austausch:

[code=Java]/* Uebersetzen.java */


import java.io.*;

import java.util.*;

import read.*;


public class Uebersetzen

{

    public static void main (String[] args)

    {

        String zeile, zeile2;

        String[] zeileArr = {}, zeile2Arr = {};

        FileReader freader1, freader2;

        int i = 0, id, id2;

        HashMap<Number, String> zeilen = new HashMap<Number, String>();

       

        try

        {

            if (args.length == 0)

            {

                System.out.print("Waehle die 1. Datei: ");

                freader1 = new FileReader(Read.getString());

                System.out.print("Waehle die 2. Datei: ");

                freader2 = new FileReader(Read.getString());

            }

            else

            {

                freader1 = new FileReader(args[0]);

                freader2 = new FileReader(args[1]);

            }

               

            BufferedReader reader1 = new BufferedReader(freader1);

            BufferedReader reader2 = new BufferedReader(freader2);

            BufferedWriter writer  = new BufferedWriter(new FileWriter("0001-test.txt"));

           

            // Einlesen der 2. Datei und speichern in HashMap

            while ((zeile2 = reader2.readLine()) != null)

            {

                i++;

                if (zeile2.indexOf("<t id=") != -1)

                {

                    zeile2Arr = zeile2.split("<t id=");        // Ergebnis: "1020101">Königstal</t>

                    zeile2Arr = zeile2Arr[1].split(">");    // Ergebnis: "1020101" + Königstal</t>

                    id = Integer.parseInt(zeile2Arr[0].replace('\"', ' ').trim());        // Ergebnis: "1020101" => 1020101

                    zeilen.put(id, zeile2 + "\n");

                }

                else

                {

                    zeilen.put(i + 50000000, zeile2 + "\n");

                }               

            }

            for (String elem : zeilen.values())

            {

                writer.write(elem);

                writer.flush();

            }

        }       

       

        catch (Exception e)

        {

            e.printStackTrace();

        }

    }

}[/code]


Es wird in der richtigen Reihenfolge eingelesen, aber in der komplett falschen Reihenfolge wieder ausgegeben:

[XML]        <t id="1021617">300</t>

        <t id="1">The X-Tended - Terran Conflict Mod</t>

        <t id="1021616">300</t>

        <t id="2">X-Tended - Terran Conflict</t>

        <t id="1021619">100</t>

        <t id="3">XTC</t>

        <t id="1021618">150</t>

        <!-- XTC Version Data (7210-7220) -->

        <t id="4">The XTC Team</t>

        <!-- <t id="1021621">20 / 15</t> -->

    <page id="7212" title="XTC" descr="XTC Framework Texts">

        <!-- <t id="1021620">19 / 15</t> -->

    </page>

        <t id="6">\nWelcome to X-Tended - Terran Conflict.\n\nWe recommend that you take a bit of time to set up your hotkeys, look into the Galactic News System, and adjust the difficulty in your Configuration Menu.\nLook at your reputation while you're there, check your property list in the statistics centre - see if this gamestart suits you fine.\n\nAnd, of course, don't forget that many things have changed - including the universe itself. One of the principles of XTC is exploration - so on you go.\n\nDon't forget about your family!</t>

        <!-- <t id="1021623">22 / 15</t> -->

        <!-- <t id="1021622">21 / 15</t> -->

</language>

        <!-- <t id="1021624">23 / 15</t> -->

    </page>   

        <t id="13">\n</t>

        <!-- <t id="1021601">00 / 15</t> -->

        <!-- <t id="1021602">01 / 15</t> -->

        <!-- <t id="1021603">02 / 15</t> -->

        <t id="21">.</t><!-- delimiter, decimal 3.14 -->[/XML]


Wieso das denn? :(



Oben