String einem String[] hinzfügen

D

dofa

Gast
hallo leute, ich hab ein problem. und zwar hab ich ein string[] mit der größe n gegeben. jetzt soll der benutzer einen string eingeben, der dann der liste hinzugefügt werden soll.
das problem ist, dass der string nicht angehängt wird sondern einfach den ersten überschreibt.
ich hab keine ahnung woran das liegt, kann eigentlich nur ne kleinigkeit sein, die ich übersehen habe.

Java:
public class FiniteList{
	
	private String[] liste;
	private boolean isFull = false;
	private int n;
	
	public FiniteList(){
		liste = new String[10];
	}
	public FiniteList(int n){
		liste = new String[n];
		this.n = n;
	}
	public void add(String s){
		for(int i = 0; i<n; i++){
			isFull();
			if(isFull=false && liste[i] == null)
				liste[i] = s;
		}
		
	}
	public boolean isFull(){
		for(int i = 0; i<n; i++){
			if(liste[i] != null)
				isFull=true;
		}
		return isFull;
	}
	public void display(){
		for(int i = 0; i<n-1; i++)
			System.out.println(liste[i]);
	}
}
 
S

SlaterB

Gast
in dem Programm ist ja ne Menge falsch,
es wird überhaupt nichts eingefügt, 'sondern einfach den ersten überschreibt.' stimmt nicht

wenn du den Konstruktor FiniteList() benutzt bleibt n 0, die meisten Methoden machen gar nichts mehr

isFull() setzt die Variable isFull auf true, sobal irgendein Element drin ist, egal was mit dem Rest ist, die Variable wird dann auf normalen Wege auch nie wieder false

auf unnormalen Wege schon: if(isFull=false && liste == null) setzt diese Variable auf false (= ist was anderes als ==), das if ist immer false, deshalb wird auch nie irgendetwas eingefügt
 
D

dofa

Gast
und warum erscheint dann als ausgabe:

(bei n=4)

eingegebenes wort
null
null
null

und wenn ich dann ein neues wort eingebe steht das dann anstelle des ersten wortes und der rest ist wieder null.
 
S

SlaterB

Gast
vielleicht hast du ja einen anderen Code als hier gepostet, einzelne Tippfehler wie das = statt == in Zeile 17 bewirken schon einen Unterschied
(mit == würde das erste Wort eingefügt, dann ist aber schon isFull true und danach ändert sich nichts mehr)



folgenden Code kann jeder kopieren und ausführen und wird gewiss keine andere Ausgabe erhalten
Java:
public class Test
{
    public static void main(String[] args)
    {
        FiniteList f = new FiniteList(4);
        System.out.println("a");
        f.add("eingegebenes wort");
        f.display();
        System.out.println("b");
        f.add("Wort 2");
        f.display();
        System.out.println("c");
    }
}


class FiniteList
{

    private String[] liste;
    private boolean isFull = false;
    private int n;

    public FiniteList()
    {
        liste = new String[10];
    }

    public FiniteList(int n)
    {
        liste = new String[n];
        this.n = n;
    }

    public void add(String s)
    {
        for (int i = 0; i < n; i++)
        {
            isFull();
            if (isFull = false && liste[i] == null) liste[i] = s;
        }

    }

    public boolean isFull()
    {
        for (int i = 0; i < n; i++)
        {
            if (liste[i] != null) isFull = true;
        }
        return isFull;
    }

    public void display()
    {
        for (int i = 0; i < n - 1; i++)
            System.out.println("x: " + liste[i]);
    }
}
Ausgabe:
Code:
a
x: null
x: null
x: null
b
x: null
x: null
x: null
c
beim display habe ich noch 'x:' eingefügt, aber das kann ja nicht stören,
die Schleife dort sorgt übrigens dafür, dass nur 3 der 4 Elemente ausgegeben werden, was deiner Ausgabe widerspricht,
es sei denn dort wird das Wort an sich ausgegeben und danach 3 Elemente aus der Liste, das würde dann wieder zusammenpassen ;)

aber ist ja auch ganz egal, löse die offenen Probleme, ein paar habe ich ja genannt
 
Zuletzt bearbeitet von einem Moderator:
D

dofa

Gast
so, ich hab jetzt ein paar änderungen vorgenommen, allerdings funktioniert das "add" nur halbwegs.
wenn ich bei n=4 4 wörter eingeb, sieht die ausgabe so aus:

1: 2:
wort1 wort2
wort1 wort1
null wort2
null null
 
D

dofa

Gast
argh!

ich mein das so:

wort1,wort1,null,null
wort2,wort1,wort2,null
wort3,wort1,wort2,wort3

dann abbruch wegen "isFull()"

Java:
private int i = 0;

public void add(String s){	
		isFull();
		if(isFull == false && liste[i] == null){
			liste[i] = s;
		i++;
		}
	}

	public boolean isFull(){
		for(int i = 0; i<n; i++){
			if(liste[i] == null)
				isFull = false;
			else
				isFull = true;
		}
		return isFull;
	}

        public void display(){
		for(int i = 0; i<n-1; i++)
			System.out.println(liste[i]);
	}
 

timbeau

Gesperrter Benutzer
Was ist denn dein grundsätzliches Prinzip bei dieser Aufgabe. Im Moment wirkst so bisschen gecodet und hoffen das es das Richtige macht.

Du kannst zum Beispiel mittels eines Index festhalten wo das erste Feld ist.

Java:
int freiesFeld = 0;

add(xyz) {
if(freiesFeld<array.length() {
array[freiesFeld] = xyz;
}
}

edit: Der Code oben ist ziemlich wirr. isFull(); bewirkt garnichts
 
S

SlaterB

Gast
> isFull(); bewirkt garnichts
doch doch, ändert ein Klassenattribut, das danach abgefragt wird..

@dofa
besteht noch eine Frage?

es wäre auch günstig deine main-Methode dahzuzuposten
 
D

dofa

Gast
wieso soll das nichts bewirken?

ich hab in der main-methode ne schleife, wo er nach dem wort fragt, was hinzugefügt werden soll.
und wenn dann isFull()==true, dann soll er die schleife abbrechen und das macht er auch wenn alle felder belegt sind (siehe mein post). also funktioniert das doch.

und das mit dem freien feld hab ich doch auch so gemacht:

private int i = 0; = freies Feld

wenn, isFull() == false && liste[freies Feld] == null (also frei), dann liste[freies Feld] = wort.

was mich wundert ist, dass er beim ersten wort die ersten beiden felder belegt und dann zwar, wie gewünscht, jedes mal das neue wort hinten dranhängt, aber das erste überschreibt.
 
D

dofa

Gast
Java:
public class Bsp19{
	
	public static void main(String[] args){
	
	String wort;
	int laenge;
	
	System.out.println("Geben Sie die laenge der Liste an.");
	laenge = SavitchIn.readLineInt();
	
	if(laenge<0)			
	 System.out.println("Negative Groesse unmoeglich.");
	
	else{
		FiniteList neueliste = new FiniteList(laenge);
		do{
		System.out.println("Geben Sie ein neues Wort ein.");
		wort = SavitchIn.readLine();
	
		neueliste.add(wort);
		if(neueliste.isFull() == true){
			System.out.println("Die Liste ist voll.");
			break;
		}	
		else	
			neueliste.display();	
		}
		while(); //hier brauch ich noch irgendeine vernünftige abbruch bedingung. hab bis jetzt einfach was reingeschrieben,
                           //damit ich das programm ausprobieren kann.
	}
	}
}
 
S

SlaterB

Gast
dein add() ist ok,

wie weiter oben schon geschreiben: display zeigt von 4 Werten sowieso nur 3 an,
ich vermute dass du einen Aufbau hast, der erst die aktuelle Eingabe ausgibt und dann von der Liste die ersten 3 Elemente,
poste deine main-Methode! (edit: hast du ja jetzt, ich schaue)
 
S

SlaterB

Gast
hmm, in deinem Programm ist nichts direkt zu sehen,
du verwechselst nicht zufällig die von dir eingetippte Eingabe mit einer Ausgabe?
zur Sicherheit und Eindeutigkeit verwende bitte ab jetzt folgendes display():

Java:
    public void display()
    {
        System.out.println("jetzt kommt die Liste:");
        for (int i = 0; i < n - 1; i++)
        {
            System.out.println("Index " + i + " von " + n + ": " + liste[i]);
        }
        System.out.println("Index " + (n - 1) + " von " + n + " = " + liste[n - 1] + " verrate ich nicht.");
    }
 
D

dofa

Gast
es funktioniert, vielen dank :)

ich sollte vor dem print(liste); noch ein print(); einfügen, dann erkenn ich beim nächsten mal auch, dass das erste wort die eingabe war und nicht zur liste gehört :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
U Char zu einem String machen Java Basics - Anfänger-Themen 1
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
B String zu einem bestehenden String hinzufügen Java Basics - Anfänger-Themen 9
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
O String von vorne nach hinten an einem Zeichen Java Basics - Anfänger-Themen 10
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
Dimax Leerzeilen aus einem String entfernen Java Basics - Anfänger-Themen 61
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
D Input/Output Array in einem String mit einem Trennzeichen verbinden Java Basics - Anfänger-Themen 17
N Variablen int Wert einem String abgeben Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
F String zu einem Server senden Java Basics - Anfänger-Themen 4
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A werte in einem String berechnen Java Basics - Anfänger-Themen 3
F Größtes Produkt in einem String Java Basics - Anfänger-Themen 4
P Char aus einem String auswählen Java Basics - Anfänger-Themen 4
M Benutzerdefinierte Suche in einem String - outofbounds Java Basics - Anfänger-Themen 7
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
C Anzahl bestimmter Zeichen in einem String ausgeben Java Basics - Anfänger-Themen 7
C Position eines Zeichens in einem String ausgeben Java Basics - Anfänger-Themen 1
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
M (Leerzeichen) zu einem gesuchten String Java Basics - Anfänger-Themen 4
K String mit Leerstellen und einem X Java Basics - Anfänger-Themen 2
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
D Zahl in einem String finden Java Basics - Anfänger-Themen 4
I Entitäten speichern in einem String? Java Basics - Anfänger-Themen 1
W Schlüsselworte Methode, die die grösste Zahl aus einem String ermittelt und zurückgibt Java Basics - Anfänger-Themen 8
G String einem String Array übergeben Java Basics - Anfänger-Themen 3
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
N Maximale Zahl in einem String Java Basics - Anfänger-Themen 8
B Unbekannte Zahl aus einem String umwandeln Java Basics - Anfänger-Themen 15
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
I Aus einem String Vorname & Nachname bekommen Java Basics - Anfänger-Themen 2
J Ascii Zeichen von einem String umwandeln und ausgeben Java Basics - Anfänger-Themen 11
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
J gesamte Hashmap mit Zeilenumbrüchen in einem String Java Basics - Anfänger-Themen 8
J Aus einem String unbekannte zeichen filtern Java Basics - Anfänger-Themen 11
A mehrere replace in einem string Java Basics - Anfänger-Themen 3
C String ab einem bestimmten Char abschneiden??? Java Basics - Anfänger-Themen 7
O Zahlenformatierung in einem String Java Basics - Anfänger-Themen 4
J Von einem String einzelne Wörter speichern Java Basics - Anfänger-Themen 6
D Das 1. Wort aus einem String herauslesen Java Basics - Anfänger-Themen 6
Beckenbauer OOP Durch Komma getrennte Einträge in einem String in ein Array oder eine Tabelle schreiben Java Basics - Anfänger-Themen 4
D Zählen von Umlauten in einem String Java Basics - Anfänger-Themen 4
S Zeichen in einem String hochstellen? Java Basics - Anfänger-Themen 9
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
C Problem mit der Extraktion von Zahlen aus einem String Java Basics - Anfänger-Themen 8
J Anzahl der Buchstaben in einem String Java Basics - Anfänger-Themen 12
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
Z Sonderzeichen in einem String gezeichnen/bearbeiten Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
eXistenZ wert von einem String auf einen Integer ändern =( Java Basics - Anfänger-Themen 6
J Wörter in einem string zählen und die anzahl zurückgeben Java Basics - Anfänger-Themen 4
D Einzelne Ziffern aus einem String Java Basics - Anfänger-Themen 10
M Datentypen Mehrere Integer aus einem String auslesen Java Basics - Anfänger-Themen 4
N an einem String ein zahl anhengen Java Basics - Anfänger-Themen 6
V Anzahl eines Buchstaben in einem String zählen Java Basics - Anfänger-Themen 7
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
Developer_X jede Zeile einer Datei mit einem String verketten Java Basics - Anfänger-Themen 16
B String einem Chararray zuweisen Java Basics - Anfänger-Themen 2
J Aus einem String blanks entfernen oder hinzufügen. Java Basics - Anfänger-Themen 9
I Aufkommen eines be*timmten Zeichens in einem String zählen Java Basics - Anfänger-Themen 13
S Anzahl von Zeichen in einem String suchen und zählen Java Basics - Anfänger-Themen 1
T Anzahl eines Strings in einem String-Array Java Basics - Anfänger-Themen 5
B Mehrere Methoden an einem String Java Basics - Anfänger-Themen 6
G Zeilenumbruch in einem String Java Basics - Anfänger-Themen 21
N Bytes in einem String Java Basics - Anfänger-Themen 3
M in einem String vergleichen Java Basics - Anfänger-Themen 9
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
C bestimmte Buchstaben in einem String ändern Java Basics - Anfänger-Themen 5
H Mehrmaliges vorkommen eines Zeichens in einem String Java Basics - Anfänger-Themen 14
M Input/Output Stream aus einem String Java Basics - Anfänger-Themen 2
N Zahl aus einem String finden und als Integer speichern Java Basics - Anfänger-Themen 3
M Aus einem String bestimmte zeichen auslesen und ausgeben Java Basics - Anfänger-Themen 8
philipp Instanznamen mit einem String bestimmen. Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben