Ergebnis 1 bis 8 von 8

Eintrag aus Array löschen? (Java)

  1. #1 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.220
    Hi,
    kann ich einen Eintrag aus einem Array so löschen das die Anderen automatisch nach rücken? (in Java)

    Angenommen ich habe einen String Array:

    String [] testArray = new String[10]

    dieser ist dann etwa so gefüllt:
    Code:
    0) "Dies"
    1) "ist"
    2) "ein"
    3) "toller"
    4) "Text"
    5) null
    6) null
    ...
    Nun würde ich gerne, z.b. das 3te Element löschen, und die anderen Aufrücken lassen. So das es hinterher so aus sieht:
    Code:
    0) "Dies"
    1) "ist"
    2) "ein"
    3) "Text"
    4) null
    5) null
    6) null
    ...
    Lässt sich das, ohne das ganze in einen anderen Array zu kopieren, machen? Wenn ja wie?

    TIA
    Look
    Lookbehind ist offline

  2. #2 Zitieren
    Lehrling
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    35
    Meinst du so?
    Code:
    for (int i = 3; i < 9; ++i)
        testArray[i] = testArray[i+1];
    
    testArray[9] = null;
    Ab dem dritten Element bekommt jeder, was hinter ihm steht. Und der letzte wird am Ende noch auf null gesetzt.
    kardano ist offline

  3. #3 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.220
    Hey,
    das könnte funktionieren, werds mal probieren.
    Danke!
    Lookbehind ist offline

  4. #4 Zitieren
    Lehrling
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    35
    Zitat Zitat von Lookbehind Beitrag anzeigen
    Hey,
    das könnte funktionieren, werds mal probieren.
    Danke!
    Wichtig ist halt, dass du bei 3 beginnst (also dem Index des zu löschenden Eintrags) und die Schleife solange läuft, wie "i < 9" ist, da [9] ja keinen mehr hinter sich hat. Wenn du das verallgemeinern willst, müsste es
    Code:
    for (int i = start; i < testArray.length - 1; ++i)
        testArray[i] = testArray[i+1];
    
    testArray[testArray.length - 1] = null;
    heißen.
    kardano ist offline

  5. #5 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.220
    Es Funktioniert!
    Habs sogar noch etwas abgekürzt, da mein Array in warheit etwas länger ist *hust* und ich ihn nicht erst bis zum Ende rechnen lassen wollte habe ich das hier in die Schleife eingefügt:
    Code:
    if (testArray[i]==null)
         break;
    Jetzt habe ich ein anderes Problem...
    Wie mache ich bei einer If-Abfrage nochma ein ExclusivOder (XOR)? *peinlich*
    Ich hab so lange immer nur & gebraucht das ich das vergessen habe!

    Edit:
    Noch n anderes Problem:
    Code:
    if (markierung[markierungsNummer].gibPosition() == position){
        ...
    gibPosition und position sind beides int Arrays[2]
    Ich habe bereits mit dem Debugger kontrolliert, die Bedingung ist eigentlich erfüllt (die beiden Arrays sind 100% identisch), aber er führt den Inhalt der If-Schleife (ich weiß, is keine Schleife, aber wie nenn ich das dann?) trotzdem nicht aus.
    Natürlich könnte ich jetzt hin gehen und die Abfrage so gestalten:
    Code:
    if ((markierung[markierungsNummer].gibPosition()[0] == position[0])&&(markierung[markierungsNummer].gibPosition()[1] == position[1])){
    und das funktioniert auch, aber irgendwas in mir sträubt sich dagegen, das muss doch wie oben auch gehen.
    Lookbehind ist offline Geändert von Lookbehind (01.04.2008 um 19:59 Uhr)

  6. #6 Zitieren
    Lehrling
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    35
    1. XOR ist a ^ b

    2. if-Bedingung

    3. Vergleich der Indizes funktioniert, klar. Ich hab ne Weile kein Java mehr gemacht, aber gibt's nicht Equals() oder sowas?
    kardano ist offline Geändert von kardano (01.04.2008 um 20:03 Uhr)

  7. #7 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.220
    Zitat Zitat von kardano Beitrag anzeigen
    1. XOR ist a ^ b

    2. if-Bedingung

    3. Vergleich der Indizes funktioniert, klar. Ich hab ne Weile kein Java mehr gemacht, aber gibt's nicht Equals() oder sowas?
    1. Danke!

    2. Die Abfrage selber ja, aber das was ausgeführt wird wenn die Bedingung erfüllt wird?

    3. .equals() kannte ich bisher nur von String und war recht überrascht das sich das auf int Arrays auch anwenden lässt, leider wurde dadurch aber mein Problem nicht gelöst. Er ignoriert weiter das die Bedingung erfüllt ist.

    Edit:
    So, habs hin bekommen.
    Die Sache war die: mit Array == Array vergleicht er ob die beiden Array-Objekte die selben sind, der Inhalt ist dabei wurscht.
    Das ich da nicht eher drauf gekommen bin!
    Es gibt aber in java.util.Arrays eine Methode die diesen Vergleich durchführt!
    Lookbehind ist offline Geändert von Lookbehind (02.04.2008 um 10:03 Uhr)

  8. #8 Zitieren
    Mythos Avatar von Pyrokar
    Registriert seit
    May 2004
    Ort
    ..... hihihähähä hier gibt es Wände und wenn ich dagegen Lauf prall ich ab, wie ein Flummi..... hihihähähääähääääää
    Beiträge
    8.115
    Arrays in Java sind immer statisch, wie du vielleicht schon gemerkt hast. Eine ziemlich flexible Struktur ist der Vektor. Ich finde ihn fast praktischer als Arrays.
    Falls du den noch nich kennst, kannst du dir den ja mal anschauen.

    Zu 2.: If-then-else-Konstrukte nennt man Verzeigungen und den Teil, der bei erfüllter If-Bedingung ausgeführt wird, heißt If-Zweig.

    Und zu den vergleichen: "==" prüft bei Objekten auf Identität und "obj1.equals(obj2)" auf Äquivalenz, also inhaltliche Gleichheit (aber afair wird eine Exception geschmissen, wenn die beiden Objekte unterschiedlichen Typs sind).
    [Bild: gg_schuetzen_ani.gif] | ~ DauJones ~ | ~ Klopfers-Web ~ | ~ German Bash ~ |
    Die meisten und schlimmsten Übel, die der Mensch dem Menschen zugefügt hat, entsprangen dem felsenfesten Glauben an die Richtigkeit falscher Überzeugungen.
    Bertrand Russell
    Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat. anonym
    Pyrokar ist offline Geändert von Pyrokar (02.04.2008 um 21:29 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •