Variablen String-Array wird ungewollt "überschreiben"

fisch100

Mitglied
Hi liebe Java-Freunde!

Heute mal wieder etwas an meinem kleinem Projekt weitergearbeitet und bin nun auf einen Fehler gestoßen wo ich nicht weiß woran es liegt das hier etwas schief läuft. :/

Hier mal der Code:
Java:
public class KLASSE
{
String[][] inv = new String[40][15];

public KLASSE()
{
        for(int i = 0; i < 40; i++)
        {
            inv[i][0] = "null";
        }
}


public void clear(int pos)
    {
        this.inv[pos][0] = "null";
        System.out.println("clear " + pos);
    }
}

( mir ist klar das ich es auch auf null lassen hätte können - hatte aber die Hoffnung das der Fehler hier lag. )

Was ist hier der Fehler: es werden für inv auf den verschiedenen positionen (im ersten Array) sämtliche Strings(0-14) zugewießen.
Sobald ich aber clear ausführe, wird sporadisch jeder, der im zweiten Array auf pos 0 etwas anderes als "null" hat, auf "null" gesetzt - also ein komplettes löschen. Stelle ich den clear Ausdruck auf "gelöscht" bekommen eben alle welche kein "null" hatten eben auf "gelöscht".

Wie man ebenso sieht habe ich System.out.println verwendet um mir Sicherheit der richtigen Ausführung zu geben - und es war nicht die einzige Stelle wo sich soetwas fand. Jedoch ohne eine Erkenntnis zu dem Problem.

Hoffe ich hab es recht verständlich beschreiben und hoffe ihr habt Rat für mich ;)

lg fisch
 

Momolin

Aktives Mitglied
Hi,

Java:
public class KLASSE
{
String[][] inv = new String[40][15];

public KLASSE()
{
        for(int i = 0; i < 40; i++)
        {
            inv[i][0] = "null";
        }
}


public void clear(int pos)
    {
        this.inv[pos][0] = "null";
        System.out.println("clear " + pos);
    }
}
[..]
Sobald ich aber clear ausführe, wird sporadisch jeder, der im zweiten Array auf pos 0 etwas anderes als "null" hat, auf "null" gesetzt - also ein komplettes löschen.
[..]

Die Variable
Code:
inv
(
Code:
String[][] inv = new String[40][15];
) ist genau ein zweidimensionales Array und nicht zwei Arrays. Um die einzelnen Elemente des Arrays (die Variable
Code:
inv
) anzusprechen, brauchst Du dann eben zwei Indizes. Mit der Zuweisung
Code:
 inv[i][0] = "null";
weist Du den Elementen mit dem zweiten Index 0 und dem ersten Index i eben allen den Wert "null" zu.
Ich würde mich sehr wundern, wenn Du nach einem Aufrufen der Methode
Code:
public void clear(int pos)
nur sporadisch den Wert "null" für das Element
Code:
inv[pos][0]
hast. Du musst immer den Wert "null" für das Element
Code:
inv[pos][0]
haben, eben weil Du dem Element
Code:
inv[pos][0]
mit
Code:
this.inv[pos][0] = "null";
genau "null" zuweist.

Grüße
Momolin
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
@Momolin, genau genommen sinds 41 Arrays ;) Eins drum rum, und 40 weitere drin.
@TO, wie Momolin sagte, es passiert nichts sporadisch...
Warum brauchst du eigentlich dieses [c]"null"[/c] :boe: ?
Und niemals Dinge hardcoden, die man anders lösen kann: [c]for(int i = 0; i < 40; i++)[/c] -> [c]for(int i = 0; i < inv.length; i++)[/c]
 

fisch100

Mitglied
ja das ist mir klar das für this.inv[pos][0] = "null"; der wert auf "null" gesetzt wird.
das Problem ist das zu 90% auch inv[X][0] auf "null" gesetzt wird, wobei X ALLE Anderen inv[] sind welche im inv[][0] etwas anderes als "null" eingetragen haben.

Also: inv[0][0] = "eins"; inv[1][0] = "zwei"; inv[2][0] = "drei";
ich führe nun clear aus -> und ALLE drei werden auf "null" gesetzt.

jedoch wird clear nur 1x ausgeführt, sprich ich hab eben keine Ahnung woher der Fehler kommt.

lg
 
S

SlaterB

Gast
immer, immer wieder unverständlich:
warum postest du keinen vollständigen Code, der das Problem zeigt?
der Code im ersten Posting bringt rein gar nichts, solange offensichtlich kein Fehler auftritt, clear() wird ja nichtmal aufgerufen

"Wie man ebenso sieht habe ich System.out.println verwendet" kommt also wenig zum Tragen,
bisher ist nichts genaues zu erkennen,
edit: an sich ist aber zumindest der Einsatz von System.out.println zu loben ;)

ein ganz vager Tipp:
man kann theoretisch an alle Stellen des zweidimensionalen Arrays dasselbe eindimensionale Array speichern:
inv[5] = inv[4];
dann würde eine Änderung an inv[5][0] auch inv[4][0] betreffen,
dann wären aber auch vorher alle schon derselbe eine Wert

aber sowas passiert eigentlich nicht mal eben nebenher..
 
Zuletzt bearbeitet von einem Moderator:

fisch100

Mitglied
ein ganz vager Tipp:
man kann theoretisch an alle Stellen des zweidimensionalen Arrays dasselbe eindimensionale Array speichern:
inv[5] = inv[4];
dann würde eine Änderung an inv[5][0] auch inv[4][0] betreffen,
dann wären aber auch vorher alle schon derselbe eine Wert

sprich wenn ich inv[5] = inv[4]; und dann inv[5] = inv[3]; setzte und nun mit clear inv[5] auf "null" setzte, werden inv[4] und inv[3] ebenso auf "null" gesetzt weil sie gleichgesetzt worden sind?! sowas ist mir eigentlich noch nie passiert

ok - nach sofortigem überprüfen -> das ist der Fehler!

die frage ist nur wie kann ich das "gleichsetzten" der einträge verhindern?
gibt es da etwas elegantes außer jeden unterpunkt des arrays mit *alterwert* + "" zu übertragen?

lg
 
S

SlaterB

Gast
> sprich wenn ich inv[5] = inv[4]; und dann inv[5] = inv[3]; setzte und nun mit clear inv[5] auf "null" setzte,
> werden inv[4] und inv[3] ebenso auf "null" gesetzt weil sie gleichgesetzt worden sind?!

Vorsicht, genau aufpassen, nach dem ersten Befehl enthalten 5 und 4 dasselbe Array, 3 ist noch abweichend,
nach dem zweiten Befehl enthält 5 das Array von 3, aber davon ist 4 nicht betroffen, 4 wäre nun abweichend

mit normalen Variablen denken ist dazu vielleicht einfacher

---------

Array kopieren ist nur ein Methodenaufruf,
copy(x,y)
usw., die lange Schleife für die Einzelwerte steht maximal einmal in der Methode, nicht schlimm

gibt auch System.arraycopy(), falls wirklich nichts eigenes..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
R String in char-Array übertragen Java Basics - Anfänger-Themen 5
P Datentypen Array und String Java Basics - Anfänger-Themen 2
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
Curtis_MC 2dimensionales Array als String ausgeben Java Basics - Anfänger-Themen 2
I char Array to String Java Basics - Anfänger-Themen 3
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
P Objekt aus String-Array erzeugen Java Basics - Anfänger-Themen 104
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
R Objekte aus Array als String + kommasepariert speichern Java Basics - Anfänger-Themen 12
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
E Array to String Method Reverse Java Basics - Anfänger-Themen 5
Mosquera Get String Array - ComboBox Java Basics - Anfänger-Themen 10
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
V zweidimensionale String Array Java Basics - Anfänger-Themen 1
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
M Array nach String durchsuchen und zurückgeben Java Basics - Anfänger-Themen 16
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
C Methoden String in char Array Java Basics - Anfänger-Themen 3
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
N String array to String Java Basics - Anfänger-Themen 6
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
B String in Array speichern Java Basics - Anfänger-Themen 4
L String zu String Array Java Basics - Anfänger-Themen 2
D Input/Output Array in einem String mit einem Trennzeichen verbinden Java Basics - Anfänger-Themen 17
D String-Array Java Basics - Anfänger-Themen 3
V String Array gegen null-Eintrag sichern Java Basics - Anfänger-Themen 11
K String in String-Array suchen Java Basics - Anfänger-Themen 11
K String Array basierend auf int Array füllen Java Basics - Anfänger-Themen 2
K Im String Array suchen Java Basics - Anfänger-Themen 8
D Elements[] string = document.getElementsByClass("betEvent"); als Array Java Basics - Anfänger-Themen 1
C Array in String umwandeln Java Basics - Anfänger-Themen 5
D Best Practice String aufbau - Char Array oder Anhängen Java Basics - Anfänger-Themen 11
M String Array mischen Java Basics - Anfänger-Themen 3
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
K String zu int Array Java Basics - Anfänger-Themen 3
B String auslesen und Stellen im Array speichern Java Basics - Anfänger-Themen 1
W Array in String und String in Array - falsche Ausgaben Java Basics - Anfänger-Themen 20
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
W Array nach String durchsuchen und Ausgeben Java Basics - Anfänger-Themen 8
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
K String in String-Array finden Java Basics - Anfänger-Themen 7
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
J 2 String Arrays in neuem String Array verbinden Java Basics - Anfänger-Themen 4
S String zu quadratischen Array Java Basics - Anfänger-Themen 3
T Array mit String, Zahlen in If Saetze packen Java Basics - Anfänger-Themen 3
J Int Array und String in einer neuen Methoder übergeben Java Basics - Anfänger-Themen 7
S ArrayDeque zu String Array Java Basics - Anfänger-Themen 2
A Variablen String Array in einzelne Strings auspalten Java Basics - Anfänger-Themen 4
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
fLooojava String zu Array Java Basics - Anfänger-Themen 5
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
E Erste Schritte Array soll kleiner werdenden String erstellen Java Basics - Anfänger-Themen 5
D String-Array aus Tastatureingabe Java Basics - Anfänger-Themen 4
A Mehrdimensionalles Array in String ausgeben in Liste Java Basics - Anfänger-Themen 5
L String array mit split füllen Java Basics - Anfänger-Themen 14
A private string array Java Basics - Anfänger-Themen 5
W String / Int-Array Java Basics - Anfänger-Themen 13
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
T Sortieren/Suche klappt nicht ganz (String Array) Java Basics - Anfänger-Themen 2
B Werte über Scanner in ein 3 dim String Array schreiben Java Basics - Anfänger-Themen 7
T String in Array suchen Java Basics - Anfänger-Themen 9
G String einem String Array übergeben Java Basics - Anfänger-Themen 3
G String to Array Java Basics - Anfänger-Themen 2
P CSV Datei in String Array -> Split -> New Array Java Basics - Anfänger-Themen 2
U OOP Array vom Typ String > Inhalt ausgeben Java Basics - Anfänger-Themen 8
J Zeichen aus String Array lesen Java Basics - Anfänger-Themen 13
S Länge eines Elements im String Array Java Basics - Anfänger-Themen 5
F Problem: Verschlüsselung von String in Array Fehler Java Basics - Anfänger-Themen 2
C Datentypen Zweidimensionales Array mit String und int Java Basics - Anfänger-Themen 3
J Array zu String Java Basics - Anfänger-Themen 13
B String Array in main() Java Basics - Anfänger-Themen 2
G String Array konvertieren in Integer Array? Java Basics - Anfänger-Themen 7
Junb String in Array speichern Java Basics - Anfänger-Themen 4
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
W String & Integer im Array Java Basics - Anfänger-Themen 7
C Datentypen int array in String ausgeben Java Basics - Anfänger-Themen 20
B Array fehler bei string split Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben