Java -> Iterator Fehlermeldung

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Damit bemängelt der Compiler höchstwahrscheinlich, dass dein Iterator it keinen Typ hat (Stichwort Generics!). Wenn du den Parameter -Xlint:unchecked beim  Java-Compiler angibst kriegst mehr Infos (steht ja da)...

Wenn du Iterator\<Konto\> it schreibst, dann legst du dich auf den Typ fest. Brauchst dann bei it.next() nicht casten und der Compiler kann seine strengere statische Typprüfung durchführen.

Noch einfacher gehts übrigens mit der for Schleife, da kannste auf Iteratoren meistens verzichten:

for (Konto konto : kontoliste) {  guthaben = guthaben + konto.gibStand(); }

Iterator<Konto> it soll es heißen...

0

Vermutlich hat dein Iterable einen generischen Typ, ist also nicht auf Konto spezialisiert. Dann liefert der Iterator Objekte vom Typ Object zurück, und der Compiler hasst Casts von Object auf abgeleitete Klassen (und auch von allen anderen Klassen auf sonstige Klassen), weil sie eine potenzielle Quelle schwer aufzuspürender Programmierfehler darstellen.

  1. public double gibGuthaben()
  2.     {         double guthaben = 0;         Iterator it = kontoliste.iterator();                  while (it.hasNext())         {             Konto konto = (Konto) it.next();             guthaben = guthaben + konto.gibStand();         }         return guthaben;     }

Java variable an Superklasse übergeben

Guten Abend,

in der subklasse wird eine Methode ausgeführt und danach soll eine Variable an die superklasse übergeben werden. Gibt es dafür irgendeine Möglichkeit? Irgendwie kann ich nichts so richtig dazu finden. Oder such ich einfach nach den falschen Sachen? Ist ja eigentlich nicht so eine große Sache...

Würde mich sehr freuen, wenn hier jemand eine Lösung parat hat. Ich häng mal noch meine Code an.

Danke!

Die Subklasse:

public class ServiceKonto extends Konto {
void einzahlen(double intMoney) {
    guthaben += intMoney - (intMoney/100*2);
}
void abheben(double intMoney) {
    guthaben -= intMoney - (intMoney/100*2);
}
}

Guthaben soll zurück gegeben werden an die Superklasse.

...zur Frage

Java - Unterklasse soll abgeänderten Dienst von Oberklasse haben

Hallo,

wie der Titel schon sagt besitze ich in Java eine Klasse Kugel ( Programmierung eines Billiardspiels mit BlueJ ) mit einer Klasse Reibungskugel. Die Klasse Kugel besitzt einen Dienst namens bewege der genau das Macht wonach es sich anhört, nur die Reibungskugel ( Unterklasse ) soll AUCH das selbe machen, mit dem Unterschied, das der Geschwindigkeitsparameter nach jeder Animation (Erklärung folgend ^^) reduziert wird. Dies war mein Lösungsansatz der jedoch nicht funktionierte :

Dienst bewegeund Konstruktor der Oberklasse Kugel // Konstruktor public Kugel(double pH, double pV, int pRadius, int pRichtung, double pSpeed) { derStift = new Stift(); zH = pH; zV = pV; this.zeichne(); derStift.dreheBis(pRichtung); x = pRadius; s = pSpeed; }

public void bewege()
{
    this.loesche();
    derStift.bewegeUm(s);
    zH = derStift.hPosition();
    zV = derStift.vPosition();
    this.abfrage();
    this.zeichne(); 
}

Hier der wahrscheinlich entscheidene Fehler denn ich nicht kapier, die Dienstmodifikation von der Unterklasse ( ganzer Code)

import sum.kern.*;

public class ReibKugel extends Kugel {

private double s;
public ReibKugel(double pH, double pV, int pRadius, int pRichtung, double pSpeed)
{
    super(pH, pV, pRadius, pRichtung, pSpeed);
    s = pSpeed;
}

 void bewege2()
{
    this.bremse();
    super.bewege();
}

private void bremse()
{
    s = s * 0.99;
}

}

...zur Frage

BlueJ - illegal start of expression. Wo liegt der Fehler?

Hallöchen, wir habe in der Schule vor kurzem mit dem Programmieren angefangen und dazu benutzen wir "BlueJ" und die Klassenbibliothek "Stifte und Mäuse".

Nun habe ich allerdings ein Problem und weiß nicht mehr weiter: In der Klasse Polygon bekomme ich in der Zeile mit "public void zeichne()" eine Fehlermeldung und zwar "illegal start of expression".

import sum.kern.*;

public class Polygon
{
    // Referenzen
    Stift meinStift;
    Polygon meinPolygon;
    Polygon meinPolygon1,meinPolygon2;

    // Konstruktor
    public Polygon(int pN,int pLaenge,int pHPosition,int pVPosition,int pWinkel)
    {
        // Objekte
        meinStift = new Stift();
        this.zeichne(pN, pLaenge, pHPosition, pVPosition, pWinkel);

        // Methoden
        public void zeichne() 

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
    }
}

Und die oben genannte Klasse Polygon soll auf die Klasse Steuerung "basieren". Liegt vielleicht hier der Fehler?

import sum.kern.*;

public class Steuerung
{
    // Referenzen
    Bildschirm meinBildschirm;

    // Konstruktor
    public Steuerung()
    {
        // Instanzvariable initialisieren
        meinBildschirm = new Bildschirm(800, 800);

        //methoden

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
    }
}

Ich würde mich sehr freuen, wenn mir jemand helfen würde.

...zur Frage

Was möchtest Du wissen?