Collection-Problem

Windows10

Bekanntes Mitglied
Warum taucht bei folgendem Code, wenn ich diesen Code wo anders aufrufe (ich rufe ihn in der ausführbaren Klasse aus) der Fehler (siehe angefügtes Bild auf)?
Der Code, der in der andere Klasse ausgeführt wird:

Java:
package collection;

import htlgkr.util.*;
import java.util.*;

/**
*
* @author Philipp
*/
public class Dictionary
{

    public void dictionary()
    {
        Map<String, String> d = new HashMap<>();
        List<Map.Entry<String, String>> dict = new ArrayList<>();
        In.open("Woerterbuch.txt");
        while (In.done())
        {
            String line = In.readLine();
            String[] woerter = line.split(";");
            d.put(woerter[0], woerter[1]);
        }
        In.close();

        print(d);

    }

    private void print(Map<String, String> d)
    {
        Out.println("Wörterbuch");
        for (Map.Entry entry : d.entrySet())
        {
            Out.println(entry.getKey());
        }
    }

}
In dieser Klasse wird er ausgeführt (der Code):
Java:
public class Collection
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        Dictionary p = new Dictionary();
        p.dictionary();
    }
}

Der Fehler, der immer auftaucht:
Unbenannt.PNG
 

mrBrown

Super-Moderator
Mitarbeiter
woerter wird nicht 2 lang sein, das könntest du einfach mal mitm Debugger überprüfen und mit if drum abfangen.
 

Windows10

Bekanntes Mitglied
woerter wird nicht 2 lang sein, das könntest du einfach mal mitm Debugger überprüfen und mit if drum abfangen.
Aber mit split mache ich ja ein
Code:
String[]
, das ich
Code:
woerter
genannt habe! Dann will ich als erstes Wort das deutsche Wort anfügen, das im
Code:
String[] woerter
an Stelle 1 (also Index 0 ist(
Code:
woerter[0]
)) und dann das englische Wort das im
Java:
String[] woerter
an Stelle 2 ist (also Index 1(
Code:
woerter[1]
))!
Habe ich da was falsch verstanden?
 

Windows10

Bekanntes Mitglied
Nein, aber dein Arraywoerter[]enthält offenbar höchstens ein Element. Das kannst du mit dem Vorschlag von @mrBrown überprüfen.
Ich habe es bereits mit dem Debugger überprüft und es sind immer zwei Wörter im Array! Ich habe eine Datei geschrieben die ich mit dem Befehl
Code:
In.open("Woerterbuch.txt");
geöffnet hab! Da sind dann pro Zeile ein deutsches und ein englisches Wort mit einem ; getrennt! Mit dem Befehl
Code:
while(!In.done)
{
//code
}
lese ich die Datei solange ein, bis sie fertig eingelesen ist! Mit dem Befehl
Code:
String line=In.readLine();
lese ich eine Zeile ein! Dann splitte ich diese Zeile auf den ; und zwar mit diesem Befehl
Code:
String[] woerter=line.split(";");
! Müsste dann nicht eingentlich in woerter[0] das deutsche Wort und in woerter[1] das englische Wort stehen?
 

Meniskusschaden

Top Contributor
Was denn nun ? x) Wie ist den jetzt der Stand?
Vielleicht hat er einfach zu oberflächlich geprüft. Beispielsweise könnte er am BreakPoint zwei Wörter gesehen und das Programm dann durchlaufen lassen haben, ohne zu prüfen, ob das überhaupt die Iteration war, die die Exception wirft. Es schleicht sich ja auch gerne mal eine zusätzliche Zeilenschaltung am Dateiende ein.;)
 

Windows10

Bekanntes Mitglied
Damit hast du aber noch nicht überprüft, ob sich wirklich zwei Elemente in dem Array befinden. Sieh' dir das Array doch einfach mal im Debugger an.
Ich hab gerade mit dem Code
Code:
for(int i=0; i<woerter.length;i++)
{
Out.println(woerter[i]); // Klasse Out.println ist in einem Paket meiner Schule und macht das gleiche wie System.out.println();
}
zwischen den beiden Codezeilen
Code:
String[]woerter=line.split("!");
und
Code:
d.put (woerter[0],woerter[1]);
überprüft ob zwei Elemente im Array sind und es waren zwei Elemente in jedem Array! Ansonsten hab ich nichts verändert!
 

Meniskusschaden

Top Contributor
Ich hab gerade mit dem Code
Java:
for(int i=0; i<woerter.length;i++)
{
Out.println(woerter[i]); // Klasse Out.println ist in einem Paket meiner Schule und macht das gleiche wie System.out.println();
}
Ich glaube nicht, dass das ein guter Test ist, denn eine Leerzeile zum Schluß kann man damit leicht übersehen. Beispielsweise führt folgender Code:
Java:
public class Split {

    public static void main(String[] args) {
        checkArray("Buch;Book".split(";"));
        checkArray("Hallo;Hello".split(";"));
        checkArray("".split(";"));
    }

    protected static void checkArray(String[] woerter) {
        for (int i=0; i< woerter.length; i++) {
            System.out.println(woerter[i]);
        }
    }
}
zu folgender Ausgabe:
Code:
Buch
Book
Hallo
Hello
Gib an der Stelle lieber die mal Länge des Arrays aus.
 

JStein52

Top Contributor
Bau doch endlich mal eine gescheite Fehlerbehandlung ein Und deine Exception wird weg sein:

Code:
        while (!In.done())
        {
            String line = In.readLine();
            String[] woerter = line.split(";");
            if (woerter.length < 2) {
               System.out.println("Fehler: "+line);
            }
            else {
               d.put(woerter[0], woerter[1]);
            }
        }
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor

Meniskusschaden

Top Contributor
Ich habe die Leerzeile im Text längst entfernt und es kommt noch immer der Fehler!
Dann ist da eben noch ein Fehler. Hast du eigentlich schon einen der zahlreichen Vorschläge direkt oder abgewandelt umgesetzt? Du kannst einfach die Fehlerbehandlung einbauen oder den Debugger vernünftig einsetzen oder Zusatzinformationen ausgeben und mit deiner Datei abgleichen, wie beispielsweise Arraylänge oder Schleifenzähler oder die Variable line (mit vorangestellten und abschliessenden Zusatzzeichen, um auch Ausgaben zu visualisieren) oder ... oder ... oder ....
Du musst dabei natürlich auch immer hinterfragen, welche Aussagekraft deine Tests haben. Du scheinst dir da hin und wieder selbst etwas vorzumachen.
 
X

Xyz1

Gast
Java:
package collection;

import htlgkr.util.*;
import java.util.*;

/**
*
* @author Philipp
*/
public class Dictionary
{

    public void dictionary()
    {
        Map<String, String> d = new HashMap<>();
        List<Map.Entry<String, String>> dict = new ArrayList<>();
        In.open("Woerterbuch.txt");
        while (In.done())
        {
            String line = In.readLine();
            String[] woerter = line.split(";");
            d.put(woerter[0], woerter[1]);
        }
        In.close();

        print(d);

    }

    private void print(Map<String, String> d)
    {
        Out.println("Wörterbuch");
        for (Map.Entry entry : d.entrySet())
        {
            Out.println(entry.getKey());
        }
    }

}
In dieser Klasse wird er ausgeführt (der Code):
Java:
public class Collection
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        Dictionary p = new Dictionary();
        p.dictionary();
    }
}

Warum heißt das Dictionary p (und nicht d)?
Wo kommt In her?
Arbeitet es nicht Objektorientiert?
Wieso heißt der Nichtkonstruktor dictionary fast genauso wie der Konstruktor (Verwechslung möglich)?
Wieso heißt das Package collection (auch Verwechslung möglich)?
Nimm besser BufferedReader.
Und summasummarum:
Java:
        try {
            Map<Integer, String> woerterbuch = new HashMap<>();
            BufferedReader reader = new BufferedReader(new StringReader(
                      "\n"
                    + "1 hallo\n"
                    + "\n"
                    + "2 tschüss\n"));
            String line;
            while ((line = reader.readLine()) != null) {
                String[] split = line.split(" ");
                if (split.length == 2) {
                    try {
                        int i = Integer.parseInt(split[0]);
                        String s = split[1];
                        if (!woerterbuch.containsKey(i)) {
                            woerterbuch.put(i, s);
                        } else {
                            System.out.println("woerterbuch contains key : " + line);
                        }
                    } catch (NumberFormatException ex) {
                        System.out.println(ex + " : " + line);
                    }
                } else {
                    System.out.println("split.length != 2 : " + line);
                }
            }
            reader.close();
            System.out.println("woerterbuch : " + woerterbuch);
        } catch (IOException ex) {
            ex.printStackTrace();
        }

Das deckt jetzt alle Fälle ab. :)
 

Salo

Aktives Mitglied
hey windos10,

schreib doch wie der stand jetzt ist.
Und, kann es sein das du inzwischen ne andere Exception hast? (kommt mir irgendwie so vor, aber sorry wenn dem nicht so ist:rolleyes:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Garbage Collection Java Basics - Anfänger-Themen 9
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
M Collection.sort sortiert nicht Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Collections Werte aus .txt in einer Collection speichern Java Basics - Anfänger-Themen 11
M Collection Aufgabe Java Basics - Anfänger-Themen 22
Arif Collections Unkonstruiertes Objekt einer Collection hinzufügen Java Basics - Anfänger-Themen 2
P Klassen In einer Autoklasse das Objekt Auto mittels Collection Speichern Java Basics - Anfänger-Themen 4
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
J Objekt in Collection speichern Java Basics - Anfänger-Themen 4
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
J Collection Objekt Java Basics - Anfänger-Themen 3
T Collections Zusammengehörende Strings in einer Collection Java Basics - Anfänger-Themen 2
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
B Collections Collection soll nur einen bestimmten Datentyp aufnehmen Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
K Collections Collection für 12 mio Strings Java Basics - Anfänger-Themen 7
Y Collection der eigenen Klasse Java Basics - Anfänger-Themen 10
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
R Passende Collection gesucht Java Basics - Anfänger-Themen 11
G Collections Wahl der richtigen Collection Java Basics - Anfänger-Themen 11
O Frage zu Verständnis von Collection Java Basics - Anfänger-Themen 4
D Scala Iterable zu Java Collection konvertieren Java Basics - Anfänger-Themen 3
D Frage zu Collection und deren Anwendung Java Basics - Anfänger-Themen 2
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
J Collection soll übergeben werden... Java Basics - Anfänger-Themen 7
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
B Iterator und Collection Java Basics - Anfänger-Themen 11
G Java Collection Frameworks Java Basics - Anfänger-Themen 5
D Collection Konvertieren Java Basics - Anfänger-Themen 7
K Datentypen Über Collection iterieren bringt fehler Java Basics - Anfänger-Themen 8
K OOP Aus Collection Objekte bestimmter Subklassen entfernen Java Basics - Anfänger-Themen 7
S Welche Collection? Java Basics - Anfänger-Themen 5
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
W Wie kann ich auf Object meiner Collection zugreifen Java Basics - Anfänger-Themen 7
J Collection Vector Java Basics - Anfänger-Themen 8
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Collection in collection Java Basics - Anfänger-Themen 6
T Collection von Objekten verschiedener Klassen Java Basics - Anfänger-Themen 4
J Collection ArrayList und mit erweitertem for iterieren Java Basics - Anfänger-Themen 7
J Probleme mit Collection ArrayList Java Basics - Anfänger-Themen 2
C Collection vs. LinkedList, Abstrakt vs. Konkret Java Basics - Anfänger-Themen 9
G Collection<BufImg> in Datei speichern Java Basics - Anfänger-Themen 8
A Collection auslesen ohne Objekttyp zu kennen? Java Basics - Anfänger-Themen 11
G Collection<Strings> - Liste von Strings verwalten Java Basics - Anfänger-Themen 9
A Struts: Über Collection iterieren mir Taglibs? Java Basics - Anfänger-Themen 13
S Collection<Typ> sort Java Basics - Anfänger-Themen 4
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
T Frage zu Vererbung beim Collection-Framework Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
M Object [][] ist nicht vom Typ Collection? Java Basics - Anfänger-Themen 3
S Collection wie LinkedHashMap Java Basics - Anfänger-Themen 7
J LinkedList, Collection, ArrayList, List. was denn bitte? Java Basics - Anfänger-Themen 6
S Collection Sort Java Basics - Anfänger-Themen 15
A Welche Collection? Java Basics - Anfänger-Themen 13
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
S Collection in einer Collection Java Basics - Anfänger-Themen 5
A Welche Collection soll ich nehmen? Java Basics - Anfänger-Themen 4
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
K Collection und Iterator Java Basics - Anfänger-Themen 7
I Bestimmte Variablen in Collection Classes Java Basics - Anfänger-Themen 2
M Source Code von Collection Framework, etc. Java Basics - Anfänger-Themen 3
vogella Cast from Collection.toArray to String[] Java Basics - Anfänger-Themen 2
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
S Mit Collection<int[]> umgehen Java Basics - Anfänger-Themen 2
S welche collection ? String und object Java Basics - Anfänger-Themen 5
M gibt es eine collection mit definierter maximaler größe Java Basics - Anfänger-Themen 4
G Collection Framework Java Basics - Anfänger-Themen 8
V Mehrdimensionale Collection? Java Basics - Anfänger-Themen 4
U JSTL: Collection auslesen mit forEach Java Basics - Anfänger-Themen 1
A Interface Collection implementieren? Java Basics - Anfänger-Themen 4
I Collection sortieren, ":" höchste "Priorität& Java Basics - Anfänger-Themen 4
P Äquivalent zu Visual Basic Collection Java Basics - Anfänger-Themen 6
G Collection, aber welche? Java Basics - Anfänger-Themen 6
A Collection<String> Java Basics - Anfänger-Themen 4
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
E Strings in Collection Java Basics - Anfänger-Themen 6
R welche Collection nehmen? Java Basics - Anfänger-Themen 4
P Collection Vector speichern mittels Serialisierung? Java Basics - Anfänger-Themen 2
megachucky Collection Vector: ausgabe klappt nicht richtig Java Basics - Anfänger-Themen 9
T Welche Collection nehmen? HashMap? Java Basics - Anfänger-Themen 4
L-ectron-X Speicher freigeben - Garbage Collection Java Basics - Anfänger-Themen 6
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben