Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe

S

Stefanx3

Gast
Hallo :)

Ich habe ein Problem wie im Titel schon beschrieben. Ich weiß nicht genau wo der Fehler jetzt genau ist, aber ich bekomme eine unerwartete Ausgabe. Ich vermute das beim Löschen oder Hinzufügen etwas falsch gemacht wird.

Ich arbeite mit Eclipse Juno.

Wortliste:
Java:
package stefan;

import java.io.*;

import javax.swing.JOptionPane;

public class Wortliste {
	
	String[] woerter;
	
	/*
	 * Default Konstruktor
	 * 
	 */
	public Wortliste(){
		woerter = new String[1];
		woerter[0] = "Default";
	}
	
	/**
	 * Konstruktor mit einem Parameter
	 * 
	 * @param text
	 */
	
	public Wortliste(String wort){
		woerter = new String[1];
		wort = woerter[0];
		
	}
	
	/**
	 * Fügt ein Wort dem Array hinzu
	 * 
	 * @param wort
	 */
	public void hinzufuegen(String wort){
		String[] neu = new String[woerter.length+1];
		
		for(int i = 0; i < woerter.length; i++){
			neu[i] = woerter[i];
		}
		
		neu[woerter.length] = wort;
		woerter = neu;
	}
	
	
	/**
	 * Löscht wein Wort aus dem Array
	 * 
	 * @param wort
	 */
	public void loeschen(String wort){
		String[] temp = new String[woerter.length-1];
		int neuIndex = 0;
		
		for(int altIndex = 0; altIndex < woerter.length; altIndex++){
			
			if(!(woerter[altIndex].equals(wort))){
				
				temp[neuIndex++] = woerter[altIndex];
			}
		}
		
		woerter = temp;
	}
	
	/**
	 * Löscht ein Wort aus dem Array aber über den Index des Wortes im Array
	 * 
	 * @param index
	 */
	public void loeschen(int index){
		int z = 0;
		String[] temp = new String[woerter.length-1];
		
		for(int i = 0; i < woerter.length-1; i++){
			
			if(i != index){
			
				temp[i] = woerter[z++];
				
			}
		}
		
		woerter = temp;
	}
	
	/**
	 * Übernimmt einen Index und gibt das Array an dieser Stelle zurück
	 * 
	 * @param index
	 * @return woerter Das Wort aus dem angegebenen Index
	 */
	public String get(int index){
		
		return woerter[index];
	}
	
	/**
	 * Gibt alle im Array gespeicherten Wörter zurück
	 * 
	 * @return text Die Wortliste wird ausgegeben
	 */
	public String liste(){
		String text = "";
		
		for(int i = 0; i < woerter.length; i++){
			text += woerter[i] + "\n";
		}
		
		return text;
	}
	
	
	/**
	 * Ladet sämtliche Wörter aus der Datei in das Attribut
	 * 
	 * @param dateiname
	 */
	public void laden(String dateiname){
		try{
			RandomAccessFile raf = new RandomAccessFile(dateiname, "r");
			
			for( ; raf.getFilePointer() != raf.length(); ){
				
				this.hinzufuegen(raf.readLine());
			}
			
			
			raf.close();
		
		}catch(FileNotFoundException fnfe){
			
			JOptionPane.showMessageDialog(null, "Fehler: " + fnfe.getMessage());
			
		}catch(IOException ioe){
			
			JOptionPane.showMessageDialog(null,"Fehler: " + ioe.getMessage());
			
		}catch(IllegalArgumentException iae){
			
			JOptionPane.showMessageDialog(null,"Fehler: " + iae.getMessage());
			
		}catch(SecurityException se){
			
			JOptionPane.showMessageDialog(null,"Fehler: " + se.getMessage());
			
		}
	}
	
	
	/**
	 * Speichert sämtliche Wörter in die Datei
	 * 
	 * @param dateiname
	 */
	public void speichern(String dateiname){
		try{
			RandomAccessFile raf = new RandomAccessFile(dateiname, "rw");
			
			raf.writeUTF(this.liste());
			
			raf.close();
		
		}catch(FileNotFoundException fnfe){
			
			JOptionPane.showMessageDialog(null, "Fehler: " + fnfe.getMessage());
			
		}catch(IOException ioe){
			
			JOptionPane.showMessageDialog(null,"Fehler: " + ioe.getMessage());
			
		}catch(IllegalArgumentException iae){
			
			JOptionPane.showMessageDialog(null,"Fehler: " + iae.getMessage());
			
		}catch(SecurityException se){
			
			JOptionPane.showMessageDialog(null,"Fehler: " + se.getMessage());
			
		}
		
	}

}

TestWortliste:
Java:
package stefan;

public class TestWortliste {

	public static void main(String[] args){
		
		Wortliste w = new Wortliste();
		
		w.hinzufuegen("test1");
		w.hinzufuegen("test2");
		w.hinzufuegen("test3");
		w.hinzufuegen("test4");
		w.hinzufuegen("test5");
		w.hinzufuegen("test6");
		w.hinzufuegen("test7");
		w.loeschen("test3");
		w.loeschen(3);
		System.out.println(w.get(2));
		System.out.println(w.liste());
		
		w.speichern("D:\\stefan.dat");
		w.laden("D:\\stefan.dat");
		System.out.println("Das Geladene:\n");
		System.out.println(w.liste());
	}
}

Meine Ausgabe ist:
Code:
test2
Default
test1
test2
null
test4
test5

Das Geladene:

Default
test1
test2
null
test4
test5


Ich hoffe um hilfe, denn ich habe grad wirklich keine Ahnung was ich falsch mache :p

Danke in vorraus ! :)
 
S

Stefanx3

Gast
Hey, sorry für der Doppel-Post, hab aber mein Problem irgendwie gelöst :)

Beim löschen war der Fehler:
Java:
public void loeschen(int index){
		int z = 0;
		String[] temp = new String[woerter.length-1];
		
		for(int i = 0; i < woerter.length; i++){
			
			if(i != index){
			
				temp[z++] = woerter[i]; // ich hatte: temp[i] = woerter[z++]; aber das ist
                                                                //falsch und man musste es umkehren, weil so wie es vorher stand, wurde woerter garnicht erhöht, sondern übersprungen
				
			}
		}
		
		woerter = temp;
	}
 

tribalup

Bekanntes Mitglied
Ohne großartig drüberzuschauen, warum nutzt du keine Arraylist. Jedesmal wenn ein neues wort hinzukommt löscht du deine Array und baust dir ein neues. Das ist nicht sehr performant.
 

F.S.WhiTeY

Bekanntes Mitglied
Moin, eine anmerkung habe ich allerdings noch:

Java:
    /**
     * Konstruktor mit einem Parameter
     * 
     * @param text
     */
    
    public Wortliste(String wort){
        woerter = new String[1];
        wort = woerter[0];
        
    }

Erscheint mir ein wenig unsinnig, da der Parameter in diesem Object nicht verarbeitet wird. Du setzt den Parameter neu und nicht eine Variable in deiner Klasse.

Sinnig wäre soetwas wie:

Java:
    /**
     * Konstruktor mit einem Parameter
     * 
     * @param text
     */
    
    public Wortliste(String wort){
        woerter = new String[1];
         woerter[0] = wort; 
        
    }

Edit: Die Idee meines Vorposters kann ich auch nur unterstützen
 
S

Stefanx3

Gast
Danke mal für die Antworten :)

@tribalup
In der Schule haben wir ArrayList nicht gelernt, sondern ganz normal mit Arrays arbeiten. ArrayList werden wir überspringen und zu Collections (schon bald) kommen^^


@F.S.WhiTeY & @Michael...
Oh ja stimmt, mein Fehler :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
J Arraylist speichern und laden? Allgemeine Java-Themen 5
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
R Java Array speichern & laden Allgemeine Java-Themen 23
F Vierdimensionellen String Array speichern/laden Allgemeine Java-Themen 5
N Speichern und laden in XML nicht via JAXB Allgemeine Java-Themen 4
G Objekte verschlüsselt in Dateien speichern und laden Allgemeine Java-Themen 2
H Bilder richtig speichern und laden Allgemeine Java-Themen 4
clemson Farbe in Datei speichern & laden Allgemeine Java-Themen 3
EagleEye bild aus dem internet laden oder imageicon speichern Allgemeine Java-Themen 5
G Highscoreliste speichern und laden Allgemeine Java-Themen 11
OnDemand Zugangsdaten externer Systeme sicher speichern Allgemeine Java-Themen 8
Z Passwort Versuche speichern Allgemeine Java-Themen 8
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
temi Lösung zum Speichern von Deltafiles Allgemeine Java-Themen 6
J Java Filechooser Speichern Allgemeine Java-Themen 8
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
T Speichern von Objekten Allgemeine Java-Themen 2
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
MiMa Speichern von Programmeinstellungen in Datei Allgemeine Java-Themen 7
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
@SupressWarnings() Feste Kosten speichern Allgemeine Java-Themen 4
N ZIp datei direkt im eclipse speichern Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
C Best Practice Speichern kleineren Mengen Stammdaten? Allgemeine Java-Themen 3
F Json in sql speichern und lesen Allgemeine Java-Themen 10
F Alte Passörter mit Gson und Json in SQL speichern? Allgemeine Java-Themen 5
K API-Key sicher speichern Allgemeine Java-Themen 2
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
Tacofan Bilder in Resource speichern Allgemeine Java-Themen 6
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
U Variablen Stringarrays mit wenig verschiedenen Zeichen effizienter speichern Allgemeine Java-Themen 10
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Daten persistent speichern Allgemeine Java-Themen 14
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
M YouTube-Video herunterladen und speichern Allgemeine Java-Themen 10
C Position speichern von verschiebbaren Elementen auf JPanel Allgemeine Java-Themen 3
S Wertepaar in LinkedList/PriorityQueue speichern Allgemeine Java-Themen 3
S speichern von RSA-Keys Allgemeine Java-Themen 1
3 OOP Instanzen aus einer Klasse persistent speichern. Allgemeine Java-Themen 9
GUI-Programmer Mp3 Dateien bearbeiten und speichern Allgemeine Java-Themen 3
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
D IP-Cam live stream speichern Allgemeine Java-Themen 9
javampir Lange Bitfolge speichern Allgemeine Java-Themen 3
M Methoden in Rescources speichern Allgemeine Java-Themen 4
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
U Screenshot erstellen und speichern Allgemeine Java-Themen 6
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
J RC4 Key als String speichern? Allgemeine Java-Themen 5
F Java Api Bilder speichern Allgemeine Java-Themen 3
T UTF-16LE String aus LDAP lesen und als ISO-8859-1 in DB speichern? Allgemeine Java-Themen 2
M Einstellungen in JAR speichern Allgemeine Java-Themen 8
F Problem beim Speichern eines Attachments Allgemeine Java-Themen 3
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
B Effizienteres Speichern von Worten Allgemeine Java-Themen 4
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
H Eclipse x Stellen einer Zahl in array speichern Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben