durchschnittalter, durchschnittpreis von fahrzeugen berechnen

deiwid

Mitglied
Ich finde ganz einfach den Fehler nicht, bitte um Hilfe:

Es geht um folgendes ich muss durchschnittalter, durchschnittpreis von fahrzeugen berechnen. das mit dem durchschnittsalter funktioniert, jedoch das mit dem durchschnittspreis nicht. es kommt immer 0,0 wenn ich die testdaten eingebe.

Jedes Fahrzeug hat einen Grundpreis, und zusätzlichen einen Rabatt der anhand des Altes berechnet wird. Den Rabatt muss ich in der Unterklasse implementieren. Und ich weiß nicht wo der Wurm liegt, weil beim Alter wird das korrekte ausgegeben und beim Preis eben 0,0. Bitte um Hilfe!!

Es sind keine Klammerfehler, es wird alles kompiliert, es wird auch keine Exception (die ich jetzt gelöscht fürs Forum) ausgelöst weil es keine Daten

Hauptklasse:
Java:
public int getBaujahr() {
		return baujahr;
	}

	public void setBaujahr(int baujahr)  {
				Date jetzt = new Date();
				int aktuellesJahr = (jetzt.getYear() + 1900);
			this.baujahr = baujahr;
	}

	public int getAlter() {
		Date jetzt = new Date();
		int aktuellesJahr = (jetzt.getYear() + 1900);
		return aktuellesJahr - baujahr;
	}

	public int getGrundpreis() {
		return grundpreis;
	}

		this.grundpreis = grundpreis;
	}

	public double getPreis() {
		double preis = grundpreis - (grundpreis * getRabatt());
		return preis;
	}
	public abstract double getRabatt();
}

Unterklasse, wo ich den Rabatt des Fahrzeug berechnen muss:

Java:
	public double getRabatt() {
		
		return (0.05*getAlter());
	}

In der Klasse soll es berechnet werden:
Java:
	public double durchschnittsAlter() {
	
		int summeAlter = 0;
		for (int i = 0; i < fahrzeuge.size(); i++) {
			summeAlter += fahrzeuge.get(i).getAlter();
		}
		return (double) summeAlter / fahrzeuge.size();
	}

	public double durchschnittsPreis() {
		int summePreis = 0;
		for (int i = 0; i < fahrzeuge.size(); i++) {
			summePreis += fahrzeuge.get(i).getRabatt();
		}

		return (double) summePreis / fahrzeuge.size();
	}
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Wieso rechnest du immer mit int, anstelle von double? Bei Alter mag das vllt noch gehen, da du ja keine Nachkommastellen hast, beim Rabatt allerdings schon.
Beispiel:
0.05 * 18 = 0.9 ..würde bedeuten, du rechnest da jetzt += 0; (da du mit int rechnest - abgeschnitten wird)
Du schneidest also immer deine Nachkommastellen ab, bei sehr kleinem Alter/Rabatt addierst du halt immer 0-Werte auf.

Das hätte man aber mit einem -zwei Ausgaben aber auch leicht selber sehen können ;>
Java:
    public double durchschnittsPreis() {
        int summePreis = 0;
        for (int i = 0; i < fahrzeuge.size(); i++) {
            summePreis += fahrzeuge.get(i).getRabatt();
            System.out.println(summePreis);
        }
 
        return (double) summePreis / fahrzeuge.size();
    }

/edit: oh ja, stimmt, du scheinst die falsche Methode aufzurufen oder?!
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Abgesehen davon sollte
summePreis += fahrzeuge.get(i).getRabatt();
wohl eher
summePreis += fahrzeuge.get(i).getPreis();
sein...
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben