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 - 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

Java: Werte aus einer Arraylist in einem int berechnen?

Moin!

Ich würde gerne Zahlen aus einer Arraylist benutzen, sie verändern, und diese dann als int weiter benutzen.

Zum beispiel in meiner arraylist sind folgende zahlen

Zahlen.get(3) = 50

Zahlen.get(6) = 3

Nun möchte ich 50 durch 3 teilen, und dieses ergebniss dann durch 100.

Ich würde nun so vorgehen, aber so gehts wohl nicht :)

int Berechnen = 100/(Zahlen.get(3)/Zahlen.get(6))

Ich habe gelesen das wenn man es nur ausgeben will, dann geht das ganze mit (double), das hat auch ganz gut funktioniert, aber ich kann halt nicht damit weiter rechnen.

schönen abend euch! - ich bin noch nicht solange dabei - lerne noch :)

-->vielleicht weiß ich es auch schon und komme nur nicht auf den Lösungsweg, ich hoffe nicht das es an der Uhrzeit liegt !! nen fluffigen Samstag euch!

...zur Frage

Was möchtest Du wissen?