OOP If und else in Main class einbinden

BombaX

Mitglied
Hallo liebe User,
da dies mein erster Poast ist erstmal ein paar Zeilen über mich.

Ich bin 21J und lerne nebenher Java, da ich nächtes Jahr eine 2. Ausbildung als FIAE machen möchte.
Ich bin jetzt ca. 2 Wochen dabei zu lernen.


Ich verzweifle irgendwie an der Logik die if und else Methode "gang" in meine Main zu bauen und dann
damit Auszuführen.




Also ich habe mit OOP angefangen und mir jetzt folgende Klassen erstellt.

Ausführende.java (main class)

Java:
public class Ausführende {

    public static void main (String [] args) {
        
       // Erstes Fahhrad 
        
        Fahrrad meinFahrrad = new Fahrrad();
        meinFahrrad.setName("Chris");  // Strings immer in ""
        meinFahrrad.setFarbe("Rot");
          
        meinFahrrad.schneller();
        meinFahrrad.schneller();
        meinFahrrad.schneller();
        meinFahrrad.schneller();
        meinFahrrad.schneller();
        meinFahrrad.schneller();
        
        
        System.out.println(meinFahrrad.getName() +" sein " + meinFahrrad.getFarbe()+ "es Fahhrad fährt gerade " + meinFahrrad.getGeschwindigkeit() + " Km/h.");
        
        // Zweites Fahhrad
        
        Fahrrad deinFahrrad  = new Fahrrad ();
        deinFahrrad.setName("Alice");
        deinFahrrad.setFarbe("Gelb");
        
        deinFahrrad.schneller();
        deinFahrrad.schneller();
        deinFahrrad.schneller();
        System.out.println(deinFahrrad.getName() +" sein " + deinFahrrad.getFarbe()+ "es Fahhrad fährt gerade " + deinFahrrad.getGeschwindigkeit() + " Km/h.");

                
                
            Auto meinAuto = new Auto () ;
            meinAuto.setFarbe("Violett");
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            meinAuto.gasGeben();
            
            
            
            
            System.out.println("Aktuelle geschwindigkeit von deinem "+ meinAuto.getFarbe() +"en Auto ist " + meinAuto.getGeschwindigkeit());
    
      
                
    }   
}

Die Auto.java Klasse

Java:
public class Auto {

    private int geschwindigkeit;
    private String farbe;
    private String gang;
    
    //********Gang***********
    public void gang() {
        
        if (geschwindigkeit <= 20)
            System.out.println("Sie fahren im 1 Gang.");
        
        else if (geschwindigkeit >20 && geschwindigkeit <= 40 )
            System.out.println("Sie fahren im 2 Gang.");
        
        else if (geschwindigkeit >40 && geschwindigkeit <= 60)
            System.out.println("Sie fahren im 3 Gang.");
        
        else if (geschwindigkeit >60 && geschwindigkeit <= 80)
            System.out.println("Sie fahren im 4 Gang.");
            
        else if (geschwindigkeit >80 && geschwindigkeit <= 120)
            System.out.println("Sie fahren im 5 Gang.");
        
        else if (geschwindigkeit > 120)
            System.out.println("Achtung die Drehzahl ist zuhoch !");
        else
            System.out.println("Es ist ein Fehler passiert!!");
    }
   
    public String getGang(){
        
        return gang;
    }
    
    //**************************
    public void gasGeben() {

        geschwindigkeit = geschwindigkeit + 10;

        if (geschwindigkeit > 100) {
            System.out.println("Du fährst zu schnell, hier sind nur 100 Km/h erlaubt.");
        }

        //******Gang***
           
        
        
    }

    public String getFarbe() {
        return farbe;
    }

    public void setFarbe(String autoFarbe) {
        this.farbe = autoFarbe;
    }

    public int getGeschwindigkeit() {
        return geschwindigkeit;

    }
}

Die Fahrrad Klasse

Java:
public class Fahrrad {
   
   private int geschwindigkeit;
   private String name;
   private String farbe;
    
    
    
    //Attribut geschwindigkeit wird durch Methoden definiert
    
    public void schneller () {
        
        geschwindigkeit = geschwindigkeit + 1 ;
    }
    
    public void langsamer () {
        geschwindigkeit = geschwindigkeit - 1 ;
    }
    
    
    public int getGeschwindigkeit () {
        return geschwindigkeit ;
    }
    
    // *********************************
    
    // Attribut name

    public String getName() {
        return name;
    }

    public void setName(String neuerName) {
        this.name = neuerName;
    }
    // Set und get Methode  name **** TODO Video Anschauen

    //Get und Set farbe
    public String getFarbe() {
        return farbe;
    }

    public void setFarbe(String neueFarbe) {
        this.farbe = neueFarbe;
    }
   
    
}

Ich danke euch für alle Tipps und Ideen ;-) :toll:
 
C

Camino

Gast
Java:
meinAuto.gang();
So wie du auch die andere Methode von Auto (gasGeben) aufrufst...
 

tagedieb

Top Contributor
Ich verstehe dein Problem nicht...

Einfach die Methode mit
Code:
meinAuto.gasGeben();
aufrufen.
 
N

nillehammer

Gast
Möchtest Du den aktuellen Gang auch im System.out.println() in der main()-Methode austgeben lassen? Dann ändere den return-Type der gang()-Methode von void auf int:
Java:
public int gang() {
        
        if (geschwindigkeit <= 20) {
            return 1;
        }

        if (geschwindigkeit <= 40 )
            return 2;
        }

       if (geschwindigkeit <= 60) {
            return 3;
        }
        
        if (geschwindigkeit <= 80) {
            return 4;
        }    

        if (geschwindigkeit <= 120) {
           return 5;
        }
        throw new RuntimeException("Sie fahren " + geschwindigkeit +". Die Drehzahl ist zu hoch");
    }
 
T

Tomate_Salat

Gast
Ich gehe mal davon aus, dass das mit "gang" gelöst ist und hier mal noch ein kleiner Tipp meinerseits:
Java:
System.out.println(meinFahrrad.getName() +" sein " + meinFahrrad.getFarbe()+ "es Fahhrad fährt gerade " + meinFahrrad.getGeschwindigkeit() + " Km/h.")

abgesehen vom Rechtschreibfehler Fahhrad (^^), würde ich die Methode toString() überschreiben. Das spart dir hier codewiederholung:
Java:
// toString in der Klasse Fahrrad
public String toString()
{
 return getName() +" sein " + getFarbe()+ "es Fahrad fährt gerade " + getGeschwindigkeit() + " Km/h."
}
// iwo im Source
Fahrrad meinRad=getFahrradFromAnywhere();
System.out.println(meinRad); // hier wird dann automatisch die Methode toString() aufgerufen ;-)

Dazu kommt noch:
[c]Ausführende [/c]
Ich wäre mir nicht sicher, ob die Umlaute hier nicht zu Problemen führen können. Umlaute würde ich im Code versuchen zu vermeiden.
Code:
Ausfuerende[/c] wäre imho schöner.

MFG

Tomate_Salat
 

BombaX

Mitglied
Wie Peinlich mein erster Thread und dann sowas.
ich habe

Java:
meinAuto.getGang () ;

mit

Java:
meinAuto.gang () ;

Verwechselt. Und hatte n kleinen Logik aussetzer. Ich sitze warscheinlich schon zulange davor. Entschuldigung.

Jetzt habe ich trotzdem noch eine kleine Frage.

Ich habe :
Java:
meinAuto.gang () ;

System.out.println(meinAuto.getGang());

eingefügt und bekomme zwar den Text "Gang" wieder aber auch ein null?


Consolenausgabe:

Code:
Chris sein Rotes Fahhrad fährt gerade 6 Km/h.
Alice sein Gelbes Fahhrad fährt gerade 3 Km/h.
Du fährst zu schnell, hier sind nur 100 Km/h erlaubt.
Sie fahren im 5 Gang.
Aktuelle geschwindigkeit von deinem Violetten Auto ist 110
null

null kommt doch nur wenn ich vergessen habe ein Parameter zu übergeben oder?

Danke nochmal und entschuldigt die euch gestohlene Zeit.


[EDIT]
@Tomate_Salat
das werde ich gleich Testen.
Ist eine super Idee, damit kann man sicher noch mehr in Methoden stopfen.
Danke :)


[/EDIT]
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
Du hast die Variable [c]gang[/c] nicht gesetzt. Somit ist diese [c]null[/c], was auch logischerweise die Rückgabe von getGang ist.
 

AquaBall

Top Contributor
Sorry, ich glaube das Problem sitzt etwas tiefer:
Java:
    private String gang;
    
    public void gang() {
...
    public int getGang() {
...

Willst du nun ein Attribut
Code:
gang
(Und warum String?)
oder eine Methode
Code:
gang()
???

Beides gleich benennen ist natürlich zumindest verwirrend.
Außerdem schleppst du das irgendwie doppelt mit.

Du könntest nun die Methode unbenennen in
Code:
gangBestimmen()
, dann könnte diese das Attribut
Code:
gang
setzen. (So wie bei nillehammer, aber statt return, this.gang zuweisen.)

Du hast dann aber immer noch das Risiko, dass
Code:
getGang()
vor
Code:
gangBestimmen()
aufgerufen werden kann, und dann einen falschen Wert (bzw. eben null) bringt.

Am besten sollte
Code:
getGang()
und
Code:
gangBestimmen()
zusammenwachsen und eines gelöscht werden.
Das Attribut Gang würde dann überflüssig und entfallen.
Das stimmt auch mit der Datenlogik/Redundanz überein: Gang ist bei dir ja nur eine andere Darstellung der Geschwindigkeit, und "verdient" hier gar kein eigenes Attribut.
Und wenn du den Gang extra führen WILLST (kann ja später sinnvoll sein), dann sollte dies bei jeder Geschwindigkeitsänderung automatisch passieren.
Dann würde wiederum die Methode gangBestimmen (bei dir heißts sie noch gang()!) nach außen entfallen und wäre nur privat.
Anbei auch noch eine "etwas andere" Variante, den Gang zu bgestimmen:
(Nicht weil sie besser wäre, sondern eher nur als "Lese- und Denk-Stoff". Letztlich könntest du den Gang ja auch (fast) direkt aus
Code:
Geschwindigkeit/20 +1
berechnen! )
Java:
//********Gang***********
    private void gang() {  // PRIVATE!! Nur bei Geschwindigkeitsänderungen, dafür dort vollautomatisch.
        this.gang=1;
        switch ( int ( geschwindigkeit / 20)) {
        case 6:
        case 5: this.gang++;
        case 4: this.gang++;
        case 3: this.gang++;
        case 2: this.gang++;
        case 1: this.gang++;
        case 0: break:
        default:
            System.out.println("Achtung die Drehzahl ist zuhoch !");
        }
    }
   
    public int getGang(){
        return gang;
    }
    
    //**************************
    public void gasGeben() {
        geschwindigkeit = geschwindigkeit + 10;
        if (geschwindigkeit > 100) {
            System.out.println("Du fährst zu schnell, hier sind nur 100 Km/h erlaubt.");
        }
        gang();  // Hier automatisch Gang"schalten"!
     }
        //******Gang***


PS: Deine Anfangswerte sind das ideale Beispiel für einen Constructor (Buch; googlen)
Java:
Fahrrad meinFahrrad = new Fahrrad();
meinFahrrad.setName("Chris");  // Strings immer in ""
meinFahrrad.setFarbe("Rot");
eleganter:
Java:
Fahrrad meinFahrrad = new Fahrrad("Chris","Rot");
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M If-Else Java Basics - Anfänger-Themen 5
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
laxla123 If-else Java Java Basics - Anfänger-Themen 4
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Übung Else if Java Basics - Anfänger-Themen 2
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
T "Einkauf" & if else Struktur Java Basics - Anfänger-Themen 7
steven789hjk543 Input mit if-else Java Basics - Anfänger-Themen 23
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
R else without if error Java Basics - Anfänger-Themen 5
F Methoden Verschachtelte if else Methode Java Basics - Anfänger-Themen 10
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
C Variablen 'else' without 'if' Java Basics - Anfänger-Themen 4
F If - Else Java Basics - Anfänger-Themen 3
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
M jOptionPane mit if else Java Basics - Anfänger-Themen 16
K Frage zu If & else if Java Basics - Anfänger-Themen 5
R else if anweisungen Java Basics - Anfänger-Themen 2
Y Problem mit If-Else Verzweigung! Java Basics - Anfänger-Themen 9
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
Hijo2006 If-else Java Basics - Anfänger-Themen 6
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
T If/ Else If (zurückkehren) Java Basics - Anfänger-Themen 4
O Grosse If / Else verschachtelung übersichlitcher gestlten Java Basics - Anfänger-Themen 6
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
M If in einem else Java Basics - Anfänger-Themen 14
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
C else in if umschreiben Java Basics - Anfänger-Themen 2
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
E If...else... Java Basics - Anfänger-Themen 7
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
C If Else Frage Java Basics - Anfänger-Themen 2
M if, else Anweisung Java Basics - Anfänger-Themen 3
J Ergebnis wird gespammt sowie eine else if Frage Java Basics - Anfänger-Themen 2
A instanceof-if-else-Anweisungen eleganter lösen Java Basics - Anfänger-Themen 5
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
V Operatoren Java if-else argument Java Basics - Anfänger-Themen 4
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
P [ANFÄNGER] if else funktioniert nicht Java Basics - Anfänger-Themen 4
T If, else Problem Java Basics - Anfänger-Themen 12
C IF-Else Verknüpfungen Java Basics - Anfänger-Themen 10
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
L else without if Fehler Java Basics - Anfänger-Themen 14
F try/catch - (else) Java Basics - Anfänger-Themen 11
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
S if und else problem... Java Basics - Anfänger-Themen 13
Q if-else Logikproblem Java Basics - Anfänger-Themen 4
M Probleme mit else if Java Basics - Anfänger-Themen 15
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
K Bedingungen else Java Basics - Anfänger-Themen 7
B if-else in einer schleife Java Basics - Anfänger-Themen 14
J Erste Schritte If-Else Idee gesucht Java Basics - Anfänger-Themen 6
T if else Java Basics - Anfänger-Themen 8
R boolean, if-else Java Basics - Anfänger-Themen 7
M if then else geht nicht Java Basics - Anfänger-Themen 10
P int-Wertevergleich mit if-else-Verzweigung Java Basics - Anfänger-Themen 3
P If-else-Verzweigung Java Basics - Anfänger-Themen 9
E Compiler-Fehler Fehler: else without if Java Basics - Anfänger-Themen 11
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
K Mal wieder ein Problem mit If / Else Java Basics - Anfänger-Themen 10
K Anfänger If / Else Problem Java Basics - Anfänger-Themen 5
C if else Abfrage Java Basics - Anfänger-Themen 11
T Umschreiben von switch in if else und umgekehrt Java Basics - Anfänger-Themen 9
C Schleifen, if, else......? Java Basics - Anfänger-Themen 8
2 if und else Java Basics - Anfänger-Themen 9
L If/else nicht korrekt ausgeführt. Java Basics - Anfänger-Themen 22
E Verschachtelte If-Anweisungen - "else without if" Java Basics - Anfänger-Themen 4
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
S if-else Java Basics - Anfänger-Themen 22
A ein if else problem Java Basics - Anfänger-Themen 13
N If-else-If Leiter Java Basics - Anfänger-Themen 9
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
L if else anweisung Java Basics - Anfänger-Themen 2
M If/Else mit Zahlenfolge Java Basics - Anfänger-Themen 13
B Problem mit Variable und if/else Java Basics - Anfänger-Themen 6
H alternativen zu if .. else .. Java Basics - Anfänger-Themen 11
J Geschachtelte If-Else Anweisung Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben