an bestimmter stelle löschen / einfügen

spot

Mitglied
Hallo,

ich sitze jetzt seit Tagen an einer Aufgabe und kriege sie einfach nicht gelöst, wäre klasse wenn ich hier ein bisschen Hilfe finden würde

Aufgabe:

2 Klassen, A und B.
Die Klasse B verwaltet Objekte der Klasse A.

Über B kann man im Laufzeitsfenster Objekte eingeben und dann ausgeben lassen.
Klappt auch alles so weit.
Nun mein Problem:

Es sollen 2 Methoden zu B hinzugefügt werden, eine zum löschen eines Objektes an einer bestimmten Stelle, eine zum hinzufügen an einer bestimmten Stelle.

Ich tüftel die ganze Zeit an bt.add(1,"m"); rum, weiß aber nicht, wie es damit klappen soll.
die 1 soll die Stelle sein (aber über die Tastatur einzugeben), "m" das Objekt, welches aus 5 eingaben (Nummer, anzahl,....) besteht.

Hilfe wäre klasse !

gruß


Java:
import java.io.*;
 
public class Bauteil
        {
    String bezeichnung;
    int inhalt;
    String bestellnummer;
    String Gewinde;
    double Preis;
    String Bestellername;
 
 
 
    public void gebeDatenEin()
    {
        BufferedReader ein=new BufferedReader(new InputStreamReader(System.in));
    try
      {
      System.out.print("Bezeichnung:   ");
      this.bezeichnung=ein.readLine();
      System.out.print("Inhalt:        ");
      this.inhalt=Integer.valueOf(ein.readLine()).intValue();
      System.out.print("Bestellnummer: ");
      this.bestellnummer=ein.readLine();
      System.out.print("Gewinde:       ");
      this.Gewinde=ein.readLine();
      System.out.print("Preis:         ");
      this.Preis=Double.valueOf(ein.readLine()).doubleValue();
      System.out.print("Besteller:     ");
      this.Bestellername=ein.readLine();
 
              }
    catch (IOException ioe)
    {
        System.out.println(ioe.toString());
    }
    }
 
   public Bauteil()
   {gebeDatenEin();
   }
 
public void gebeaufBilschirmAus()
{
    System.out.println("Bezeichnung:         "+this.bezeichnung);
    System.out.println("Inhalt:              "+this.inhalt);
    System.out.println("Bestellnummer:       "+this.bestellnummer);
    System.out.println("Gewinde:             "+this.Gewinde);
    System.out.println("Preis:               "+this.Preis);
    System.out.println("Besteller:           "+this.Bestellername);
}
public static void main(String[] args)
{
    Bauteil bt=new Bauteil();
    System.out.println("\nBauteil");
    bt.gebeaufBilschirmAus();
}
}

Java:
import java.io.*;
import java.util.ArrayList;
public class Bauteilverwaltung
{
         public int n;
     public int m;
     private int anzahl=5;
         private int arrayindex=0;
         Bauteil bt[]=new Bauteil[5];
 
         private void waehleAus()
         {
                  int e=0;
                  BufferedReader menueEin=new BufferedReader(new InputStreamReader(System.in));
                  do
                  {
                           System.out.println("Bitte geben Sie Ihre Auswahl ein:\n\n");
                           System.out.println("Eingabe             = 1");
                           System.out.println("Füge an Stelle ein  = 2");
                           System.out.println("Lösche an Stelle    = 3");
                           System.out.println("Ausgabe             = 4");
                           System.out.println("Ende                = 5\n");
                           System.out.print("-> ");
                           try
                           {
                                    e=Integer.valueOf(menueEin.readLine()).intValue();
 
                           }
                           catch(IOException ioe)
                           {
                                    System.out.println(ioe.toString());
                           }
                           switch (e)
                           {
                                    case 1:this.gebeEin();break;
                                    case 2:this.fuegeEin();break;
                                    case 3:this.loescheAnStelle();break;
                                    case 4:this.gebeAus();break;
                                    case 5:System.exit(0);break;
                                    default: System.out.println("ungueltige Eingabe!\n");
                           }
                  }while(e!=5);
        }
         public static void main(String[] args)
        {
                  Bauteilverwaltung a=new Bauteilverwaltung();
                  a.waehleAus();
        }
         private void gebeEin()
        {
                  this.bt[this.arrayindex]=new Bauteil();
                  this.arrayindex++;
        }
         private void fuegeEin()
        {
            {
            ArrayList bt=new ArrayList();
            bt.add(1,"m");
           }
}
 
 
         private void loescheAnStelle()
        {
        
        }}
 
Zuletzt bearbeitet von einem Moderator:
SOLLEN die Bauteile in einem
Bauteil bt[]=new Bauteil[5];
Array verwaltet werden?
Wenn man sie auch in einer ArrayList verwalten dürfte, wäre der Aufwand deutlich geringer...
 
Hm. Hast du eine Idee, wie die Methoden aussehen sollen? Ich würde vermuten, dass es sowas geben soll wie
Code:
public void fuegeEin(int stelle, Bauteil bauteil) { ... }
public void loesche(int stelle) { ... }
Oder soll die Eingabe der Daten für das einzufügende Element auch IN der Verwaltungs-Klasse sein?

Wie auch immer: Wenn man Ein Bauteil an eine bestimmte Stelle X einfügen will, dann müssen alle, die vorher an Stellen >=X standen, um 1 nach hinten verschoben werden.
 
hi,

wie die Methoden aussehen sollen weiß ich nicht, es wird nur gesagt:

Code:
Erweitern Sie die Bauteilverwaltung um die Methoden loescheAnStelle()und fue-
geEin().Bei der Methode loescheAnStelle() soll das Programm zur Eingabe einer Nummer 
auffordern und an dieser Stelle im Array das Bauteil-Objekt entfernen. Bei der Methode 
fuegeEin() soll das Programm zur Eingabe einer Nummer auffordern und an dieser Stelle im 
Array ein neues Bauteil-Objekt einfügen. 
4.        loescheAnStelle()       
           Wenn z.B. der Wert an der Stelle 5 geloescht werden soll, muss der Wert von
           Stelle 6 nach 5, der Wert von Stelle 7 nach 6 usw..
5.	    fuegeEin() 
           Wenn z.B. an der 3. Stelle ein Wert einzufügen ist, muss vorher der dort 
           stehende Wert auf die 4. Stelle, der dort stehende Wert muss vorher auf die
           5. Stelle usw..
 
Ah, OK, die Eingabe soll direkt dort erfolgen - d.h. deine fuegeEin und loescheAnStelle-Methoden sehen schon richtig aus. In diesen Methoden solltest du dann die Eingaben machen lassen (das wird ja anscheinend schon gemacht, wenn ein Bauteil erstellt wird - zusätzlich sollte dann noch der index eingegeben werden...)

Hast du schon allgemein überlegt, wie der Ablauf sein könnte, wenn du die erstmal eingegeben hast:
Java:
public void fuegeEin()
{
    int stelle = ... // wird eingegeben
    Bauteil bauteil = ... // Wird erstellt und mit Daten gefüllt

    // Hier geht's mit dem Einfügen los:
    ....
}
?!
 

Neue Themen


Zurück
Oben