addAtPosition - Zahl an einer bestimmten Position einfügen

  • Themenstarter Themenstarter Stick
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Stick

Gast
Guten Abend!

habe da eine Frage bezüglich einer File:

Uund zwar muss Ich eine Zahl an einer bestimmten Stelle der Liste einfügen, und die anderen Zhalen um eins nach hinterrücken...
ich habe bereits probiert wie es gehen könnte, kam aber zu keinem vernünftgen Ergebnis.
Bitte um Hilfe:

Code:
/**
    * addAtPosition Zahl an einer bestimmten Stelle einfügen!
    * @param zahl  (die einzufügende Zahl)
    * @param index (Stelle and er eingefügt werden soll)
    * return keine Rückgabe
    */
    
    int index;
    int einfgzahl;
     public int addElement(einfgzahl,index ){
     }

Stick[/quote]
 
Stick hat gesagt.:
Guten Abend!

habe da eine Frage bezüglich einer File:

Uund zwar muss Ich eine Zahl an einer bestimmten Stelle der Liste einfügen, und die anderen Zhalen um eins nach hinterrücken...

Von was für einer Liste sprichst du? Meinst du LinkedList, ArrayList, Vector, JList etc. ?

Spezifizier mal genauer.
 
Es ist eine Int Liste.
Wenn du den Source haben möchtest, nur schreiben!
 
Das die Liste ints aufnimmt sieht man ja an der Signatur der Methode....Meinte eher ob du irgendwas wie ArrayList etc. noch verwendest.

Ansonsten: Code ist nie schlecht..Post mal.
 
wenn es sich um eine List handelt, die das List Interface implementiert nutze einfach die add Methode - da werden die Elemente automatisch nach hinten veschoben
 
SOURCE IST TEILWEISE NOCH NICHT FERTIG

Code:
/*
*     Int- Liste
*     zum Speichern einer Liste von int-Zahlen
*/

// ______________________________,,,___(^_^)___,,,______________________________

public class IntListe {
       // Instanzvariablen
       private int [] elemente =  new int[10000];    // Feld zum speichern der Elemenete der Liste
       private int lastIndex;                        // der Index des letzen gespeicherten Elementes

// ______________________________,,,___(^_^)___,,,______________________________
       
       // Konstruktoren
       // heissen wie die Klasse haben keinen Rückgabetyp,
       // auch nicht void. Es kann mehrere Konstruktoren geben
       // ( Anzahl/ Typ der Parameter)
        public IntListe(){
          lastIndex = -1;   // markiert leere Liste!
        }

// ______________________________,,,___(^_^)___,,,______________________________

    /**
    * getElement liefert das Element an einer bestimmten Stelle!
    * @param index
    * @return int
    */
    
      public int getElement(int index){
       int temp;
         if(index<= lastIndex){
         temp = elemente[index-1];
         return temp;
         }
         else{
           return temp = 000;
         }
      }
// ______________________________,,,___(^_^)___,,,______________________________

    /**
    * addAtPosition Zahl an einer bestimmten Stelle einfügen!
    * @param zahl  (die einzufügende Zahl)
    * @param index (Stelle and er eingefügt werden soll)
    * return keine Rückgabe
    */
    
    int index;
    int einfgzahl;
     public int addElement(einfgzahl,index ){

     }

// ______________________________,,,___(^_^)___,,,______________________________

      /**
    * removeFromPosition Zahl an anegegebener Stelle löschen!
    * Übrigen Elemente rücken vor
    * @param index (Stelle and er gelöscht werden soll)
    * return keine Rückgabe
    */

     public int deleteElement(int index){
         ent

     }
    
// ______________________________,,,___(^_^)___,,,______________________________

    /**
    * remove soll die als Parameter übergebene Zahl entfernen, auch wenn sie
    * mehrfach vorkommt!
    * @param die zu entfernenede Zahle
    * return keine Rückgabe
    */
    
    /**
    * inList soll rückliefern ob eine Zhal in der Liste enthalten ist!
    * @param die  Zahl die gesucht werden soll
    * return boolean (true oder false)
    */
 
    public boolean inList(int zahl){
      boolean vorhanden = false;
      for (int i=0; i<=lastIndex; i++){
        if (elemente[i] == zahl){
          return true; // return beendet die Methode!!!
        }
      }
      return false;
    }

 
 
       // Methoden
       
       /**
       * fügt ein Element am Ende der Liste hinzu
       */
        public void add(int zahl){
          if (lastIndex < 9999){
            lastIndex ++;
            elemente[lastIndex] = zahl;
          }
        }
       
       /**
       * liefert die Anzahl der in der Liste gespeicherten Zahlen
       * @param kein
       * @return int
       */
       
       public int getSize(){
        return lastIndex + 1;
       }
       
       
       /**
       * liefert eine String darstellung undrerer Liste zurück
       * @param keine
       * @return String
       */
        public String toString(){
          String temp = "[";
          for ( int i=0; i<=lastIndex; i++){
            temp = temp + elemente[i];
            if( i < lastIndex){
              temp = temp + ",";
            }
          }
          temp = temp + "]";
          return temp;
        }

// ______________________________,,,___(^_^)___,,,______________________________
}
 
Geht das so??

Code:
public void addAtPosition(int position, int number){ 
    
 for(int x=lastIndex;x>=position;x--){
       elemente[x+1]=elemente[x];
     }
     lastIndex++;
     elemente[position]=number;
   }

LG
 
Stick hat gesagt.:
SOURCE IST TEILWEISE NOCH NICHT FERTIG

Code:
      /**
    * removeFromPosition Zahl an anegegebener Stelle löschen!
    * Übrigen Elemente rücken vor
    * @param index (Stelle and er gelöscht werden soll)
    * return keine Rückgabe
    */

     public int deleteElement(int index){
         ent

     }

Hab mir jetzt den Rest noch nicht genau angeschaut,aber da hast du wohl vergessen eine Anweisung fertig zu schreiben =)
 
Was passiert wenn du über die Grenzen hinaus gehst? Du gehst zwar nicht in for Schleife rein, aber du inkrementierst die Anzahl der Elemente (bzw. lastIndex) und setzt den Wert an Stelle position auf number. Das musst du noch ändern, also überprüfen ob du dich im zulässigen Bereich befindest.

Noch was:

Bei getElement() - wäre es nicht besser im Falle des nichtvorhandenseinds des Index -1 zurückzuliefern als 0 ?

Btw. wieso beschränkst du die Liste auf 10000 Elemente? Du könntest doch auch zumindest im Konstruktor was initialisieren lassen (Feldgröße)....wärst "variabler"


edit:
Hab jetzt auch noch remove() und deleteElementAt() implementiert...aber du findest die Lösung dafür sicher selber raus. Mit der if-Bedingung in addElementAt(..) müsste es eigentlich stimmen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben