Methode ändern

Wirtschaftsinformatiker

Bekanntes Mitglied
Bei der Methode liefereSieger muss ich die Methode so ändern, dass das Auto, das eine längere Strecke als andere gefahren ist, ist Sieger.
Jetzt ist hier fahre1 Sieger, aber wie ändert sich die Methode?
fahrer1= 10,2
fahrer2=10,1
fahrer3=10,05
Streckenlänge=10, 00
[CODE lang="java" title="Code"] public Rennauto liefereSieger()
{
if(fahrer1.gibGefahreneStrecke()>= streckenLaenge)
{
sieger = fahrer1;
return sieger;
}
else if(fahrer2.gibGefahreneStrecke()>= streckenLaenge)
{
sieger = fahrer2;
return sieger;
}
else if(fahrer3.gibGefahreneStrecke()>= streckenLaenge)
{
sieger = fahrer3;
return sieger;
}
else
{
return null;
}
}[/CODE]
 

Wirtschaftsinformatiker

Bekanntes Mitglied
Was ist jetzt mein Fehler?
Java:
public Rennauto liefereSieger()
    {
        if(fahrer1.gibGefahreneStrecke()> fahrer2 && fahrer3)
        {
            sieger = fahrer1;
            return sieger;
        }
        else if(fahrer2.gibGefahreneStrecke()> fahrer1 && fahrer3)
        {
            sieger = fahrer2;
            return sieger;
        }
        else if(fahrer3.gibGefahreneStrecke()> fahrer1 && fahrer2)
        {
            sieger = fahrer3;
            return sieger;
        }
        else
        {
            return null;
        }
    }
 

LimDul

Top Contributor
Computer und insbesondere Programmiersprachen sind doof. Sie machen exakt das was du ihnen sagst.

Java:
fahrer1.gibGefahreneStrecke()> fahrer2
Was sagt der Code? Vergleiche die gefahrene Strecke von Fahrer 1 womit genau? Was steht auf der rechten Seite des Vergleiches?
 

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Code"]public Rennauto liefereSieger()
{
int max = streckenLaenge;
if(fahrer1.gibGefahreneStrecke() = max)
{
sieger = fahrer1;
}
else if(fahrer2.gibGefahreneStrecke() = max)
{
sieger = fahrer2;
}
else if(fahrer3.gibGefahreneStrecke() = max)
{
sieger = fahrer3;
}
else
{
return null;
}
return sieger;
}
[/CODE]
 

LimDul

Top Contributor
Vergleiche macht man mit == nicht mit = als Anmerkung.

Spielen wir das Beispiel doch mal mit ein paar Zahlen durch. Wo kommt streckenLaenge her? Wenn Streckenlaenge 100 ist und fahrer1 101 gefahren ist und fahrer2 100, wer ist dann nach deinem Code der Sieger?

Edit: Du hast ja im Startbeitrag sogar Zahlen - spiel es damit mal Schritt für Schritt durch.
 

LimDul

Top Contributor
Anstelle wild, nicht funktionierenden Code rein zu werfen, erkläre doch mal Schritt für Schritt wer bei den von dir gelieferten Zahlen wer der Sieger ist:

fahrer1= 10,2
fahrer2=10,1
fahrer3=10,05
Streckenlänge=10, 00
Wer ist der Sieger und warum?
 

temi

Top Contributor
Du möchtest etwas wie:

Gefahrene Strecke von Fahrer 1 ist größer als gefahrene Strecke von Fahrer 2 und gefahrene Strecke von Fahrer 1 ist größer als gefahrene Strecke von Fahrer 3
 

mihe7

Top Contributor
Da er mehr Strecke als die andere gefahren ist, ist er Sieger
Also musst Du offensichtlich ermitteln, welcher Fahrer die längste Strecke zurückgelegt hat, also gem. @temi
Gefahrene Strecke von Fahrer 1 ist größer als gefahrene Strecke von Fahrer 2 und gefahrene Strecke von Fahrer 1 ist größer als gefahrene Strecke von Fahrer 3
Dann hätte Fahrer 1 die längste Strecke zurückgelegt.
 

temi

Top Contributor
Er ist mehr Strecke als die anderen nach dem Zielpunkt gefahren ist und das bedeutet, dass er das Ziel schneller als die anderen erreicht hat, dann ist er der erste Sieger.
Ich denke du solltest die Frage nach der benötigten Zeit hinten anstellen, weil sie hier irrelevant ist. Achte einfach in Zukunft darauf dich präzise auszudrücken. Wenn du Strecke meinst, dann sage Strecke und nicht Zeit.

EDIT: Gottseidank studierst du nicht Physik, du würdest uns vermutlich ins Chaos stürzen :)
 
Zuletzt bearbeitet:

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Code"]public Rennauto liefereSieger()
{
int max = streckenLaenge;
if(fahrer1.gibGefahreneStrecke() >= fahrer2.gibGefahreneStrecke() && fahrer1.gibGefahreneStrecke() >= fahrer3.gibGefahreneStrecke())
{
sieger = fahrer1;
return sieger;
}
else if(fahrer2.gibGefahreneStrecke() >= fahrer1.gibGefahreneStrecke() && fahrer2.gibGefahreneStrecke() >= fahrer3.gibGefahreneStrecke())
{
sieger = fahrer2;
return sieger;
}
else if(fahrer3.gibGefahreneStrecke() >= fahrer2.gibGefahreneStrecke() && fahrer3.gibGefahreneStrecke() >= fahrer1.gibGefahreneStrecke())
{
sieger = fahrer3;
return sieger;
}
else
{
return null;
}
}[/CODE]
 
K

kneitzel

Gast
Gefahrene Strecke von Fahrer 1 ist größer als gefahrene Strecke von Fahrer 2 und gefahrene Strecke von Fahrer 1 ist größer als gefahrene Strecke von Fahrer 3
Das Problem, das ich hier etwas sehe ist einfach nur: Die Lösung zu präsentieren wird dem TE nicht helfen. Die Ermittlung genau dieser Aussagen ist ja der wichtige Punkt, der geleistet werden muss. Die "Übersetzung" in Java ist dann ja fast nebensächlich.

Wie vermittelt man dies aber? Die Frage stellt sich ja regelmäßig hier im Forum und mein Ansatz mit dem "Stift und Papier" wird ja selten wirklich aufgegriffen und ist daher nicht so effektiv, wie ich es mir erhoffen würde.

Da wären andere Ansätze evtl. gut. Aber ich sehe da bisher keine Alternativen.
- Lösungen präsentieren sehe ich problematisch
- Irgendwelche Formalismen wie von mir in dem Thread sehe ich auch nicht wirklich als hilfreich an. Das ist zwar ein formaler, valider weg, aber das hilft einem Anfänger vermutlich weniger.
 

temi

Top Contributor
Die Lösung zu präsentieren wird dem TE nicht helfen.
Wohl richtig, aber wir stupsen hier schon die ganze Zeit in die Richtung, die man eigentlich verstehen sollte. Hat aber nichts gebracht.

Für eine Didaktikdiskussion sollten wir aber evtl. ein separates Thema starten.

Immerhin konnte er die Lösung auf die beiden anderen Fälle übertragen. Ist doch schon mal was.
 

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Code"]public class Rennbahn
{
private int streckenLaenge;
private Rennauto fahrer1;
private Rennauto fahrer2;
private Rennauto fahrer3;
private Rennauto sieger;
/*
* Der Konstruktor der Klasse.
* @param Streckenläng
*/
public Rennbahn(int laenge)
{
streckenLaenge = laenge;
fahrer1 = null;
fahrer2 = null;
fahrer3 = null;
sieger = null;
}

/*
* Setzt das übergebene Auto auf eine freie Spur.
* @param das Rennauto, welches am Rennen teilnehmen möchte.
*/
public void setzeAufSpur(Rennauto auto)
{
if(auto != null && fahrer1 == null)
{
fahrer1 = auto;
}
else if(auto != null && fahrer2 == null)
{
fahrer2 = auto;
}
else if(auto != null && fahrer3 == null)
{
fahrer3 = auto;
}
else
{
throw new IllegalArgumentException("Tut mir Leid. Versuche es später erneut.");
}
}

/*
* Jeder Fahrer simuliert eine Fahrt für einen festgelegten Zeitraum.
*/
public void simuliereZeitabschnitt()
{
fahrer1.fahre();
fahrer2.fahre();
fahrer3.fahre();
}

/*
* Überprüft, ob eines der Autos das Ende der Strecke erreicht hat.
* @return das Auto, welches das Ziel erreicht,
*/
public Rennauto liefereSieger()
{
if(fahrer1.gibGefahreneStrecke() >= fahrer2.gibGefahreneStrecke() && fahrer1.gibGefahreneStrecke() >= fahrer3.gibGefahreneStrecke())
{
sieger = fahrer1;
return sieger;
}
else if(fahrer2.gibGefahreneStrecke() >= fahrer1.gibGefahreneStrecke() && fahrer2.gibGefahreneStrecke() >= fahrer3.gibGefahreneStrecke())
{
sieger = fahrer2;
return sieger;
}
else if(fahrer3.gibGefahreneStrecke() >= fahrer2.gibGefahreneStrecke() && fahrer3.gibGefahreneStrecke() >= fahrer1.gibGefahreneStrecke())
{
sieger = fahrer3;
return sieger;
}
else
{
return null;
}
}

/*
* Das Rennen wird gestartet.
*/
public void rennenDurchfuehren()
{
while(liefereSieger() == null)
{
simuliereZeitabschnitt();
if(liefereSieger() != null)
{
System.out.println("Der Fahrer " + liefereSieger().gibFahrer() + " hat gewonnen");
}
}
}

/*
* Ein Fahrer wird von seiner Strecke disqualifiziert.
* @param das Rennauto, welches nicht mehr am Rennen teilnehmen darf.
*/
public void entferne(Rennauto auto)
{
if(fahrer1 == auto)
{
fahrer1 = null;
}
else if(fahrer2 == auto)
{
fahrer2 = null;
}
else if(fahrer3 == auto)
{
fahrer3 = null;
}
else
{
throw new IllegalArgumentException("Das übergebene Auto wurde nicht für das Rennen angemeldet.");
}
}
}

[/CODE]
 
K

kneitzel

Gast
Das ist die Klasse Rennbahn - aber wir brauchen auch noch mind. den Code, den Du startest (main Methode).
 

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Code"]public class Rennauto
{
private String name;
private String fahrzeugTyp;
private int maxSpeed;
private int gefahreneStrecke;

/**
* Initialisiere die Eigenschaften in einem geeigneten Konstruktor.
* @param String nameFahrer, String fahrzeugTyp, int maxSpeed
*/
public Rennauto(String nameFahrer, String fahrzeugTyp, int maxSpeed)
{
name = nameFahrer;
this.maxSpeed = maxSpeed;
this.fahrzeugTyp = fahrzeugTyp;
gefahreneStrecke = 0;
}

/**
* Definiere einen Konstruktor, indem der Name der Fahrerin übergeben wird.
*/
public Rennauto(String nameFahrer)
{
name = nameFahrer;
maxSpeed = 120;
fahrzeugTyp = "GTR";
gefahreneStrecke = 0;
}

/**
* Führe die Methode fahre, dass sie für einen festen Zeitabschnitt fährt, aus.
* Aufruf ist nur möglich, wenn die Geschwindigkeiz zwischen 0 und Maxgeswindigkeit liegt.
* Benutze die Methode Math.rondom
*/
public void fahre()
{
int time = 9;
int currentSpeed = (int)(Math.random() * maxSpeed);
gefahreneStrecke += currentSpeed * time;
}

/**
* Gib die gefahrene Strecke an.
* @return gefahrene Strecke
*/
public int gibGefahreneStrecke()
{
return gefahreneStrecke;
}

/**
* Gib der Name des Fahrer an.
* @return Name
*/
public String gibFahrer()
{
return name;
}
}
[/CODE]
 

temi

Top Contributor
Das sind ja alles nur Klassen. Klassen sind die Baupläne für Objekte. Irgendwo musst du das jetzt "zusammenbauen". Eine Rennbahn erzeugen, Rennautos hinzufügen, das Rennen starten usw.

Beispiel:
Java:
// Klasse ist der Bauplan eines Autos
class Auto {
  
    // viel mehr Code
  
    public void fahre() {
        // irgendwelcher Code zum Fahren
    }
}


// dann z. B. in der main()

Auto bmw = new Auto(); // hier wird ein konkretes Auto erzeugt
Auto audi = new Auto(); // und noch eines
bmw.fahre(); // das Auto fährt jetzt
audi.fahre();
 

Jw456

Top Contributor
Dann schaue dir doch mal an welchen Datentyp deine Methode gibGefahreneStrecke() zurück gibt.
Das ist nur ein int. Was sind deine Ausgangs Werte Kommazahken.

fahrer1= 10,2
fahrer2=10,1
fahrer3=10,05


Also was könntest du machen.
 

temi

Top Contributor
Dann schaue dir doch mal an welchen Datentyp deine Methode gibGefahreneStrecke() zurück gibt.
Das ist nur ein int. Was sind deine Ausgangs Werte Kommazahken.

fahrer1= 10,2
fahrer2=10,1
fahrer3=10,05


Also was könntest du machen.
Also soweit ich das sehe, ergibt sich die gefahrene Strecke, wenn man mit dem Auto "fährt". Die wird nicht direkt gesetzt. Keine Ahnung ob die am Anfang gezeigten Werte überhaupt relevant sind oder nur Beispiele des TE.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
D Werte von Variablen über Methode ändern Java Basics - Anfänger-Themen 10
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
M Wert von globalen Variablen über eine Methode ändern Java Basics - Anfänger-Themen 8
S Ein Attribut/Instanz eines bestehendes Objektes mit SETTER Methode ändern Java Basics - Anfänger-Themen 3
B Methode zum ändern der Farbe? Java Basics - Anfänger-Themen 20
A In Methode boolean ändern Java Basics - Anfänger-Themen 2
Jats Instanzvariable in Methode ändern Java Basics - Anfänger-Themen 6
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
V Methoden printChar Methode mit Rückgabetyp void Java Basics - Anfänger-Themen 26
F Graph Tiefensuche Methode Java Basics - Anfänger-Themen 7
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
S Methode Java Basics - Anfänger-Themen 4
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
Liroyd Methode mit Objektvariabel rechnen? Java Basics - Anfänger-Themen 6
D Methode um mögliche Rezepte auszugeben Java Basics - Anfänger-Themen 12
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
A Ein Array bearbeiten und in einer anderen Methode nutzen Java Basics - Anfänger-Themen 6
A Ergebnis einer Methode bei einer anderen verwenden Java Basics - Anfänger-Themen 13
L Iteratorform und Methode mit variabler Parameterzahl Java Basics - Anfänger-Themen 31
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben