Werte aus zwei Objekten miteinander vergleichen

con0815

Aktives Mitglied
Hey ho,

habe angefangen mit der Programmierung unter Java. Werde bestimmt noch so einige Fragen stellen, hehe. :bae:
Meine Frage setzt sich wie Folgt zusammen:

Ich möchte Werte vergleichen und eine Art Rechnung ausgeben welche zu einem Ergebnis führen soll.

Java:
public static void main(String[] args) {
		Auto one;
		one = new Auto();
		one.Automarke();
		one.Leistungscheck();
		System.out.println("");
		Auto two = new Auto();
		two.Automarke();
		two.Leistungscheck();

Hier liegt unter one.Leistungscheck(); und eben two.Leistungscheck(); ein Wert "Höchstgeschwindigkeit" vor, kann ich diesen Wert aus beiden Objekten miteinander vergleichen um eine Art "Gewinner" zu bestimmen?

Gruß
 
Java:
Auto one;
        one = new Auto(); // Konstruktor für das Auto ohne Parameter
        one.Automarke(); // Aufruf der Methode Automarke() die nach aussen nichts macht
        one.Leistungscheck(); // Aufruf der Methode Leistungscheck() die nach aussen nichts macht
        System.out.println("");
        Auto two = new Auto(); // Und das ganz für Auto2
        two.Automarke();
        two.Leistungscheck();

Also musst du irgendein Attribut beim Leistungscheck() nach aussen liefern, damit dein Programm es auswerten kann. In Java werden häufig Attribute über getter/setter-Methoden gehandhabt. Daneben finde ich es für merkwürdig ein Auto zu instanzieren ohne Marke oder PS-Anzahl. Daher habe ich einen geeigneten Konstruktor erzeugt.

Java:
public class Auto {
	private String marke;
	private int ps;

	public Auto(String marke, int ps) {
		this.marke = marke;
		this.ps = ps;
	}

	public String getMarke() {
		return marke;
	}

	public void setMarke(String marke) {
		this.marke = marke;
	}

	public int getPs() {
		return ps;
	}

	public void setPs(int ps) {
		this.ps = ps;
	}

	public static void main(String[] args) {
		Auto one = new Auto("VW", 80); 
        Auto two = new Auto("BMW",200);
        if (two.getPs() > one.getPs()) {
			System.out.println("Der BMW hat mehr PS als der VW");
        }
	}
}
 
Zuletzt bearbeitet:
Hallo,

danke für die schnelle Antwort von dir!
Also dazu muss ich sagen das ich das alles schon in einer class definiert habe, bzw versucht. Ich habe alles relativ auf Random, jedes Auto wird pro Runde random verteilt, momentan 6 Autos.

Ich habe es wahrscheinlich auch total umständlich gelöst, aber naja wie gesagt gerade angefangen.
Java:
public class Auto {
	double geschwindigkeit; //Festlegung einiger Variablen, wie gesagt kann alles antürlich total umständlich sein
	int ps;
	int auto_marke;
	double zusatz;
	String am;
	int gewicht;
	
	void Automarke() { //Gibt zufällig ein Auto, später versuche ich es mit Arrays oder so, ist ja nur der Anfang zum verstehen!
		int marke = 1+ (int) (Math.random()*6);
		if(marke == 1){ 
			System.out.println("Du hast einen VW Golf 1");
			am = "Golf 1";
			gewicht = 850;
			
		}
		if(marke == 2){ 
			System.out.println("Du hast einen VW Golf 2");
			am = "Golf 2";
			gewicht = 980;
		}
		if(marke == 3){ 
			System.out.println("Du hast einen VW Golf 3");
			am = "Golf 3";
			gewicht = 1200;
		}		
		if(marke == 4){ 
			System.out.println("Du hast einen VW Golf 4");
			am = "Golf 4";
			gewicht = 1300;
		}
		if(marke == 5){ 
			System.out.println("Du hast einen VW Golf 5");
			am = "Golf 5";
			gewicht = 1400;
		}
		if(marke == 6){ 
			System.out.println("Du hast einen VW Golf 6");
			am = "Golf 6";
			gewicht = 1450;
		}
		auto_marke +=marke;
		
	}
	
	void Leistungscheck() {
		System.out.println("Der " + am + " kommt auf touren!"); 
		double ps1 = (int) ((Math.random() + 1) * 100); // Zufällige Ps Zahl.
		ps += ps1;
		System.out.println("Der " + am + " hat " + ps1 + "PS"); // Gibt Ps aus.
		double kwlong = (int) ps1 / 1.36; // Rechnet die KW aus
		int kw = (int) kwlong;
		System.out.println("Der " + am + " hat " + kw + " KW"); // Gibt KW aus.
		double schnelle = (int) ps1 * 1.234; // Zufälliger Wert um aus PS die Geschwindigkeit zu rechnen. Muss sowieso geändert werden
		geschwindigkeit += schnelle;
		System.out.println("Der " + am + " faehrt " + schnelle + "KmH schnell");
		
	}
	
	double tuning() { // Macht eine Art Tuning welches die Spitzengeschwindigkeit erhöht
		double zusatz = 0;
		if ( auto_marke == 1){
			 zusatz = (int) (geschwindigkeit * 1.2);
		}
		if ( auto_marke == 2){
			 zusatz = (int) (geschwindigkeit * 1.3);
		}
		if ( auto_marke == 3){
			 zusatz = (int) (geschwindigkeit * 1.4);
		}
		if ( auto_marke == 4){
			 zusatz = (int) (geschwindigkeit * 1.5);
		}
		if ( auto_marke == 5){
			 zusatz = (int) (geschwindigkeit * 1.6);
		}
		if ( auto_marke == 6){
			 zusatz = (int) (geschwindigkeit * 1.7);
		}
		System.out.println("Das Auto faehrt hoechstens " + zusatz + "KmH");
		return 0;
	}
	
}

Wieder erwähnen ich bin neu! 🙂
 
Stimmt, und das mit random zu machen ist zwar am Ende ganz hilfreich beim Erstellen aber "doof", weil nicht einfach reproduzierbar, da ja immer andere Werte genommen werden.

Desweiteren halte ich eine Klasse für so unterschiedliche Fahrzeuge wie Golf-1 oder Golf-3 für stilistisch schlecht. Da bietet sich doch eher an, von einer gemeinsamen Oberklasse zu erben.
abstract class Auto
class Golf1 extends Auto
class Golf3 extends Auto
Dann kannst du spezifisch überschreiben, was einen Golf1 von einem Golf-3 unterscheidet.
Dein Ansatz dies alles in einer Klasse abzuhandeln,ist extrem schlechter Stil!

Wenn ein Objekt über System.out.println() ausgegeben wird, wird die toString()-Methode aufegrufen, um eine textuelle Repräsentierung auszugeben. Also kannst du in der "Mutter"klasse Auto die toString() Methode definieren und alle abgeleiteten Klassen (Golf1, Golf3) erben dieses Verhalten.

Das macht deine Stringausgaben wesentlich kürzer. Dieses gilt auch, wenn die Oberklasse
abstract class Auto implements Comparable<Auto>
definiert ist. Dann wird beim Vergleich von zwei Autos die Methode
Java:
	@Override
	public int compareTo(Auto o) {
	}
benutzt und du kannst festellen, ob dieses Auto "kleiner", "grösser" oder "gleich gross" wie Auto o ist.
 

Zurück
Oben