www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Sonstiges - Informatik" - Array: Element löschen
Array: Element löschen < Sonstige < Schule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Array: Element löschen: Korrektur benötigt
Status: (Frage) beantwortet Status 
Datum: 19:25 Do 08.04.2010
Autor: su92

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Aufgabe
Wie kann man in Array ein Element löschen???

Hallo,

Also ich habe eine Idee, aber ich glaube, dass sie komplett falsch ist!!!


public class ListealsFeld () {

     //variablen
     static  int  Liste[] = new int [5];
     static int  Letztes = -1000;
    //Die Liste mit Inhalt fuellen
    public static void fuellen (){
    Liste[0] = 1;
    Liste[1] = 2;
    Liste[2] = 3;
    Liste[3] = 4;
    Liste[4] = Letztes;
}

   //Mit dieser Methode soll die Zwei aus der Liste entfernt werden.
    int List = newArray("1""2""3""4""Letztes");
    int loeschen = 2 // Die zwei soll aus der liste entfernt weden.
      for (int i =0;i<Liste.lenght;i++)
      Liste[i] = Liste [i + 1];

    //Gibt die Liste aus
    public static void ausgabe() {
            int i =0;
            while (Liste[i] != Letztes){
                     System.out.print(Liste [i]+ " " );
            i++;
            }
            System.out.println(Liste[i]);
     }



ist das so richtig ?? Würde das so funktionieren??

Ich hoffe ihr könnt mir weiter helfen.
Ah, ich soll dazu noch ein "Struckturgramm" entwickeln, aber ich kann das nicht. Könnt ihr mir Tipps geben, wie man bei allen Methoden schnell ein Struckturgramm entwickeln kann ?? Und wie ist das in diesem Fall, also wenn man aus einem Array ein Element löschen möchte?

Ich bedanke mich im vorraus

Schöne Grüße
Su

        
Bezug
Array: Element löschen: Antwort
Status: (Antwort) fertig Status 
Datum: 23:53 Do 08.04.2010
Autor: Event_Horizon

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Hallo!

> Eingabefehler: "{" und "}" müssen immer paarweise
> auftreten, es wurde aber ein Teil ohne Entsprechung
> gefunden (siehe rote Markierung)
>  
> Wie kann man in Array ein Element löschen???
>  Hallo,
>  
> Also ich habe eine Idee, aber ich glaube, dass sie komplett
> falsch ist!!!
>  
>


> public class ListealsFeld () {
>  
> //variablen
>       static  int  Liste[] = new int [5];
>       static int  Letztes = -1000;
>      //Die Liste mit Inhalt fuellen
>      public static void fuellen (){
>      Liste[0] = 1;
>      Liste[1] = 2;
>      Liste[2] = 3;
>      Liste[3] = 4;
>      Liste[4] = Letztes;
>   }
>  
> //Mit dieser Methode soll die Zwei aus der Liste entfernt
> werden.
>      int List = newArray("1""2""3""4""Letztes");
>      int loeschen = 2 // Die zwei soll aus der liste
> entfernt weden.
>        for (int i =0;i<Liste.lenght;i++)
>        Liste = Liste [i + 1];

Hier gibt es zwei Probleme:
Erstens ersetzt du JEDES Element in der Liste durch das nächste.
Entweder beginnt deine FOR-Schleife mit i=loeschen, dann würde das Ersetzen erst beim dritten Element anfangen.
Oder du machst sowas:

int gefunden=0;
for(int i=0; i<Liste.length;i++){
  if(Liste[i]==loeschen){
    gefunden=1;
  }
  if(gefunden==1){
    Liste[i]=Liste[i+1]
  }
}

Das Ersetzen geht erst dann los, wenn ein Element vom Wert loeschen gefunden wurde.

Zweitens geht deine Schleife bis inclusive i=(Liste.length -1). Das heißt, im letzten Durchlauf ist i=4. Und damit wird im letzten Durchlauf Liste[4]=Liste[5] gemacht, aber Liste[5] existiert ja nicht. Nimm daher besser i<(Liste.length-1)
Keine Ahnung, was JAVA macht, wenn man Liste[5] versucht, anszusprechen. C meckert nicht, schreibt dann aber Müll in das letzte Element.




>
> //Gibt die Liste aus
>      public static void ausgabe() {
>              int i =0;
>              while (Liste != Letztes){
>                       System.out.print(Liste + " " );
>              i++;
>              }
>              System.out.println(Liste);
>       }

Der Teil würde tatsächlich funktionieren, aber dein Array ist ja immernoch gleich lang, im letzten Element steht ja immernoch was drin.


Was hälst du von folgendem billigen Weg:

Mach dir neben deinem Array eine Variable, die die Größe des Arrays enthält:


    Liste[0] = 1;
    Liste[1] = 2;
    Liste[2] = 3;
    Liste[3] = 4;
    Liste[4] = 5;

    groesse=5;


Wenn du einen Wert rauskickst, machst du auch diese Variable um eins kleiner:


    Liste[0] = 1;
    Liste[1] = 3;
    Liste[2] = 4;
    Liste[3] = 5;
    Liste[4] = 5;

    groesse=4;

und greifst anschließend drauf so zu:

for(int i=0; i<groesse;i++){
}

Damit bastelst du dir eine eigene, "gültige" Länge. Allerdingst bleibt der Speicherplatz von Liste[4] natürlich immernoch belegt...


Was nun dein Struktogramm angeht:

Nun, du solltest wissen, wie darin ne FOR- und WHILE-Schleife oder ne IF-Anweisung aussieht. Versuch doch mal schrittweise, das hinzuzeichnen. Letztendlich hast du deinen Code schon, und willst daraus das Diagramm machen, das ist einfacher als umgekehrt.



Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]