Klausuraufgabe Bordcomputer

TJava

Bekanntes Mitglied
Java:
public class Bordcomputer {

	private Tank einTank; // Was passiert hier genau??Es gibt eine Klasse Tank siehe unten
	private double kmstand;
	private double literverbrauchje100km;

	public Bordcomputer(Tank einTank,double literverbrauchje100km,double kmstand ){
		
		this.literverbrauchje100km = literverbrauchje100km;
		this.kmstand = kmstand;
		
		
	}
	public void ausgeben(){
		System.out.println("Tankinhalt: "+einTank.gibLiterImTank());
		
		System.out.println("Bei "+ this.literverbrauchje100km +"l Durchschnitts-Verbrauch auf 100 km");
		System.out.println("Können Sie noch ca."+ this.literverbrauchje100km/einTank.gibLiterImTank() +" kmfahren.");
		if(einTank.gibLiterImTank()/einTank.gibTankvolumen() < 0.1)System.out.println("!!Bitte Tanken!!");
	}
	public boolean fahren(double km){
		if(km < (einTank.gibLiterImTank()/einTank.gibTankvolumen())){
			einTank.verbrauchen(km/ 100*this.literverbrauchje100km );
			kmstand += km;
			return true;
		}
		else{
			return false;
		}
		
	}
	public static void main(String[] args) {
        Bordcomputer j = new Bordcomputer(einTank,50,50);
        //Was muss hier übergeben werden? wie funktioniert das?
	
	}


Klasse Tank
Java:
public class Tank {

	private double literimtank;
	private double tankvolumen;

	Tank(int literimtank, int tankvolumen) {
		this.tankvolumen = tankvolumen;

		if (literimtank <= tankvolumen)

			this.literimtank = literimtank;

		else

			this.literimtank = tankvolumen;
	}

	public double gibLiterImTank() {
		return this.literimtank;

	}

	public double gibTankvolumen() {
		return this.tankvolumen;
	}

	public boolean tanken(double liter) {
		if (liter <= tankvolumen - literimtank) {
			this.literimtank +=liter;
			return true;
		} else
			return false;
	}
	public boolean verbrauchen(double liter){
		if(liter<=this.literimtank){
			this.literimtank -= liter;
			return true;
		}
		else return false;
		
	}
	
	
}

Hallo ich hoffe ihr könnt mir das erste mal helfen :-D

Also es gibt eine Klasse Tank und eine Klasse Bordcomputer

Eigentlich verstehe ich alles,nur das hier nicht ganz.
private Tank einTank;
Hier wird ein Objekt der Klasse angelegt? oder nur die Objektvariable?

Was muss hier übergeben werden?
Oder was wird hier übergeben?

public Bordcomputer(Tank einTank,double literverbrauchje100km,double kmstand ){

this.literverbrauchje100km = literverbrauchje100km;
this.kmstand = kmstand;
}


so wollte ich das dann anwenden:

public static void main(String[] args) {
Bordcomputer j = new Bordcomputer(einTank,50,50);

funzt aber leider nicht und mir ist nicht ganz klar wieso nicht.


MfG
 
Zuletzt bearbeitet von einem Moderator:

Blakh

Bekanntes Mitglied
Java:
private Tank einTank;

Du deklarierst eine Variable einTank vom Typ Tank, aber das ist nicht initialisiert, d.h. es ist zu dem Zeitpunkt null.

So erstellst du dann das Objekt:

Java:
einTank = new Tank(567,1000);

Dann sollte es auch funktionieren ...
 

TJava

Bekanntes Mitglied
so hätte ich es auch gemacht aber der lehrer hat das so vorgegeben.


Code:
public Bordcomputer(Tank einTank,double literverbrauchje100km,double kmstand )
was soll das?was wird da übergeben?

und wieso kann man es dann nicht in der main verwenden?

Code:
public static void main(String[] args) {
        Bordcomputer j = new Bordcomputer(einTank,50,50);



thx
 
Zuletzt bearbeitet:
S

SlaterB

Gast
schreibe doch bitte [ java ] statt [ code ] für deine Java-Code-Blöcke

und was soll
Bordcomputer j = new Bordcomputer(einTank,50,50);
bedeuten?
einTank wäre wenn überhaupt eine Referenz, irgendeine Variable,
an erster Stelle in der main-Methode wird aber kaum irgendwo was gesetzt sein,
du sollst ein Objekt übergeben, also new Tank()

-----

die Methode
System.out.println(string);

ruft man doch auch nicht mit
System.out.println(string);
oder
System.out.println(einString);
auf

sondern übergibt aktiv etwas neues

System.out.println("test");
System.out.println(new String(...));


bzw. bei
Bordcomputer j = new Bordcomputer(einTank,double ,double );
ersetzt du die beiden double doch auch durch Werte, wieso nicht den ersten Parameter?
 
Zuletzt bearbeitet von einem Moderator:

ARadauer

Top Contributor
Java:
 private Tank einTank; // Was passiert hier genau??Es gibt eine Klasse Tank siehe unten
nur die Variable deklariert...

Java:
public Bordcomputer(Tank einTank,double literverbrauchje100km,double kmstand ){        
        this.literverbrauchje100km = literverbrauchje100km;
        this.kmstand = kmstand;               
    }
du musst den übergebenen Tank schon dem Boardcomputer zuweisen!!

Java:
public Bordcomputer(Tank einTank,double literverbrauchje100km,double kmstand ){        
        this.literverbrauchje100km = literverbrauchje100km;
        this.kmstand = kmstand;            
   this.einTak = einTank;
    }

Java:
public static void main(String[] args) {
        Bordcomputer j = new Bordcomputer(einTank,50,50);
du hast noch keinen Tank... der einTank der klasse Boardcomputer ist für die statische main Methode nicht sichtbar...

so:
Java:
public static void main(String[] args) {
        Tank einTank = new Tank(1234,1234);
        Bordcomputer j = new Bordcomputer(einTank,50,50);

gib die main Methode in eine Andere Klasse (zb Start) dann wirds klarer..
 

Haave

Top Contributor
Ich weiß nicht, ob es viel Sinn ergibt, wenn du die Instanzvariablen tankvolumen und literimtank (besser wäre btw eine Schreibweise "literImTank") als double deklarierst, dann aber nur ganzzahlige Werte übergeben kannst...

Java:
public class Tank {
	
	private double literimtank;
	private double tankvolumen;

	Tank(int literimtank, int tankvolumen) {
		this.tankvolumen = tankvolumen;
		[...]
	}
}
 

ARadauer

Top Contributor
Ich weiß nicht, ob es viel Sinn ergibt, wenn du die Instanzvariablen tankvolumen und literimtank (besser wäre btw eine Schreibweise "literImTank") als double deklarierst, dann aber nur ganzzahlige Werte übergeben kannst...

was haben Schulaufgaben mit fachlicher Sinnhaftigkeit zu tun? Is doch wurscht! ;)

Ist Sinnhaftigkeit ein Wort?
 
S

SlaterB

Gast
dein Satz ist schon falsch, nein kannst du nicht

ansonsten gabs jetzt mehr Erklärungen als einer je verdient,
und du wiederholst einfach nur die Frage? ;)
 

TJava

Bekanntes Mitglied
ah ok jetzt habe ich es verstanden

Tank ein1Tank = new Tank(100, 150);
Bordcomputer j = new Bordcomputer(ein1Tank, 10, 100);
Es muss natürlich auch das objekt überall umbenannt werden :)

Super danke an alle die mitgeholfen haben..
 

Ähnliche Java Themen

Neue Themen


Oben