Array: Element löschen < Sonstige < Schule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | 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
|
|
|
|
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.
|
|
|
|