Methode ändern

Wirtschaftsinformatiker

Aktives 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:
 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;
        }
    }
 

Wirtschaftsinformatiker

Aktives 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

Aktives Mitglied
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;
    }
 

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

Aktives Mitglied
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;
        }
    }
 

kneitzel

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

Aktives Mitglied
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.");
        }
    }
}
 

Wirtschaftsinformatiker

Aktives Mitglied
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;
    }
}
 

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
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
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
X Methoden Methode zur Punktezählung in Blackjack Java Basics - Anfänger-Themen 2
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
O Warum will die MEthode noch am Ende einr eturn Java Basics - Anfänger-Themen 10
K Zweimal dieselbe Methode als Übergabeparameter nutzen Java Basics - Anfänger-Themen 1
M Methode - Array mit Booleans füttern Java Basics - Anfänger-Themen 7
L Methoden Methode kompiliert nicht Java Basics - Anfänger-Themen 2
S Aktuell beste Methode um zwei Bilder zu vergleichen..? Java Basics - Anfänger-Themen 1
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
I Array einer Methode wiedergeben Java Basics - Anfänger-Themen 2
I Argumente einer Java Methode Java Basics - Anfänger-Themen 14
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
S Erklärung zur Methode und array Java Basics - Anfänger-Themen 12
S Kann nicht auf die Liste zugreifen mit der Methode!? Java Basics - Anfänger-Themen 3
Rinderfilet75 GameLoop Render Methode Java Basics - Anfänger-Themen 4
C Auf die Methode einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 1
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
L Methode Point[], Array widergeben Java Basics - Anfänger-Themen 5
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
N Wozu nutzt man in der Main Methode das args Array? Java Basics - Anfänger-Themen 10
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
M Get Methode alles einzeln? Java Basics - Anfänger-Themen 6
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
J Methode verstehen Java Basics - Anfänger-Themen 3
L Methode in setText() setzen Java Basics - Anfänger-Themen 6
B eine methode erstellen Java Basics - Anfänger-Themen 7
D Methode Java Basics - Anfänger-Themen 7
T Auf Instanz der selben Klasse aus überschriebener Methode in Methode zugreifen. Java Basics - Anfänger-Themen 2
M mehrere Rückgabenwerte aus Methode Java Basics - Anfänger-Themen 7
Stargirlxo Iterator + Methode Java Basics - Anfänger-Themen 10
G Rekursive Methode mit 2 Aufrufen Java Basics - Anfänger-Themen 1
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
G return 1 + methode Java Basics - Anfänger-Themen 4
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
T getAttribut in einer Methode aufrufen Java Basics - Anfänger-Themen 8
T Methode um Array mit for-each-Schleife auszulesen Java Basics - Anfänger-Themen 7
N Groß- und Kleinschreibung bei Java: void Methode Java Basics - Anfänger-Themen 1
BorussiaMG1900 Implementation einer Methode Java Basics - Anfänger-Themen 1
H Kürzere Scan Methode Java Basics - Anfänger-Themen 7
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
M Rekursive Java-Methode Java Basics - Anfänger-Themen 13
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
B Methoden warum macht die Methode nicht das was ich erwarte? Java Basics - Anfänger-Themen 2
L Attribute aus Klasse in berechnungs Methode übergeben Java Basics - Anfänger-Themen 1
Y Aufruf von Methode nicht möglich. Java Basics - Anfänger-Themen 2
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 3
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
G Methoden Methode die aus einem Array ein Index ausgibt? Java Basics - Anfänger-Themen 2
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
M negate Methode Java Basics - Anfänger-Themen 13
JavaClara Fehlermeldung bei split-Methode Java Basics - Anfänger-Themen 12
A Methode in einer anderen Klasse verwenden Java Basics - Anfänger-Themen 1
Eule25 Methode mit Array Java Basics - Anfänger-Themen 4
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben