Zweites Interface

Status
Nicht offen für weitere Antworten.

DWetzler

Mitglied
Hallo,

habe wieder mal eine Anfängerfrage, habe folgendes Problem: Ich habe ein neues Interface, mit den beiden Methoden getAddDurchschnitt und getDeleteDurchschnitt. Vorgeben ist das Interface Integerspeicher und die Klasse SimpleIntegerspeicher. Ich muß nun hinbekommen dass meine Klasse auch das Interface Masszahlen implementiert. Ich habe die beiden Methoden auch schon fertig beschrieben und funktioniert auch eigentlich alles, nur das wenn ich die Methoden aufrufe immer ein Fehler entsteht, weil er die Methode irgendwie nicht findet. Habe einen Teil des Quellcodes mall hier unten aufgelistet.

Hier mein neues Interface:
Code:
public interface Masszahlen{
  long getAddDurchschnitt(); //Durchschnittszeit in Nanosekunden für add
  long getDeleteDurchschnitt(); //Durchschnittszeit in Nanosekunden für delete
}

Hier das vorgegebene Interface:

Code:
public interface Integerspeicher
 {
   void addInteger(int z);        // int einfügen
   boolean contains(int z);         // ist int enthalten?
   void deleteInteger(int z);     // int löschen
   void toStart();                  // Zeiger an den Anfang des Integerspeichers
   int getNext();                 // nächsten int lesen, Zeiger weitersetzen
  boolean hasNext();          // prüfen, ob noch nicht am Ende
 }

Hier die vorgegebene Klasse:

Code:
public class SimpleIntegerspeicher implements Integerspeicher,Masszahlen    //Hier habe ich es einfach
 {                                                                            // mit aufgeführt
   private int size;
   private int numint;
   private int[] theData;
   private int pointer;

   public SimpleIntegerspeicher(int s)
    {
      ....    }
  
  public SimpleIntegerspeicher() { this(16); }
  
  
   public boolean contains(int s)
    {
     ....    }

   public void addInteger(int s)
    {
      .....    }

   public void deleteInteger(int s)
    {
     ....    }

  
    
  public void toStart() {.... }

   public int getNext()
    {
      .....
    }
  
  public boolean hasNext()
    {
      ......
    }

    public long getAddDurchschnitt(){                      //Hier habe ich meine Methode beschrieben für Add
     ....   }
   
    public long getDeleteDurchschnitt(){                   //Hier habe ich meine Methode beschrieben für Delete
     ....    }
    
  public static void main(String[] args)
   {
    Integerspeicher sp = new SimpleIntegerspeicher(); 
    final int bereich = 100;
    final int anzahl = 100;
    int i;
    int max = (int) (anzahl * Math.random());
    System.out.println("Anzahl Zahlen: "+max);
    // Füge Zahlen ein
    for (i=0; i<max; i++) sp.addInteger((int)(bereich*Math.random()));
    // Zeige Inhalt des Speichers
    System.out.println("Inhalt vor dem Löschen:");
    sp.toStart();
    while (sp.hasNext()) System.out.print(sp.getNext()+" ");
    // Lösche ein wenig
    for (i=0; i < max/2; i++) sp.deleteInteger((int)(bereich*Math.random()));
    // Zeige Inhalt des Speichers
    System.out.println("\nInhalt nach dem Löschen:");
    sp.toStart();
    while (sp.hasNext()) System.out.print(sp.getNext()+" ");
    System.out.println(Durchschnitt für Add: "+getAddDurchschnitt());             //Hier rufe ich mein Add-Methode auf
    System.out.println(Durchschnitt für Delete: "+getDeleteDurchschnitt());     //Hier rufe ich mein Del-Methode auf 
    
    }
 }

Leider klappt mein Methodenaufruf nicht. Könnt ihr mir sagen was ich falsch gemacht habe bzw. wie ich es hinbekomme das es läuft? Vielen Dank für eure Hilfe!!!!!
 
Code:
...
    System.out.println(Durchschnitt für Add: "+getAddDurchschnitt());             //Hier rufe ich mein Add-Methode auf
    System.out.println(Durchschnitt für Delete: "+getDeleteDurchschnitt());     //Hier rufe ich mein Del-Methode auf 
    
    }
 }

Da fehlen auch Anführungszeichen:

Code:
System.out.println("Durchschnitt für Add: "+getAddDurchschnitt());
    System.out.println("Durchschnitt für Delete: "+getDeleteDurchschnitt());
    
    }
 }


PS: Nächstes mal auch die Fehlermeldung posten, das spart oft viel Arbeit.
 
Sorry hatte nur hier im Forum die Anführungszeichen vergessen. Habe sie sonst aber drin gehabt. Hier die Fehlermeldungen die ich bekomme:

SimpleIntegerspeicher.java:122: cannot find symbol
symbol : method getAddDurchschnitt()
location: interface Integerspeicher
System.out.println("\nDurchschnittszeit pro Add: "+sp.getAddDurchschnitt());
^


SimpleIntegerspeicher.java:123: cannot find symbol
symbol : method getDeleteDurchschnitt()
location: interface Integerspeicher
System.out.println("\nDurchschnittszeit pro Del: "+sp.getDeleteDurchschnitt());
^
2 errors

Nochmals Danke für die Hilfe!
 
Wenn Du das Objekt so initialisierst:

Code:
Integerspeicher sp = new SimpleIntegerspeicher();

dann kannst Du auch nur die Methoden vom Interface Integerspeicher aufrufen. In Deinem Fall musst Du dann schreiben:

Code:
SimpleIntegerspeicher sp = new SimpleIntegerspeicher();

Dann hast Du Zugriff auf alle Methoden.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben