if else if anfängerfrage

Fasta

Neues Mitglied
Hallo, ich habe mich mal angemeldet weil ich java ein wenig lerne, komme aber hier nicht weiter anhand eines Übungs-Struktogrammes
mahnung.JPG

ich habe bisher das geschrieben,

Java:
import java.util.Scanner;

public class Mahnung {

    public static void main(String[] args) {
        System.out.println("Bezahlt?");
        Scanner scan = new Scanner(System.in);
        
        String eingabe = scan.next();
        
        String antwort = "nein";
        String antwort2 = "ja";
        if (eingabe.equals (antwort)){
            System.out.println("FM < AM");
        } else if (eingabe.equals (antwort2)){
            System.out.println("Ende");
        }
        scan.close();

    }

}


aber das geht natürlich nicht weiter in die nächste verzweigung. Wie geht es weiter in die nächste Verweigung?

Gruß
 

temi

Top Contributor
Ein kleiner Tipp von mir. Tu dir selbst einen Gefallen und achte darauf, wie du deine Variablen gut benennen kannst.
Java:
String antwort = "nein";
String antwort2 = "ja";

if (eingabe.equals(antwort)) { // was war gleich die Antwort? 42?

Das ist im Prinzip ein guter Ansatz, aber besser wäre ganz eindeutig:
Java:
String antwortNein = "nein";
String antwortJa = "ja";

if (eingabe.equals(antwortNein)) { // und schon muss man nicht mehr gucken was nun antwort noch mal war

Der üblicherweise gewählte Ansatz wäre es allerdings Konstanten zu definieren. In Java werden Konstanten normalerweise "final static" deklariert und der Name komplett groß geschrieben:
Java:
public class Mahnung {
    private final static String JA = "ja";
    private final static String NEIN = "nein";

    public static void main(String[] args) {
        // ...
        if (eingabe.equals(NEIN)) {
        // ...
    }
}
 

Joanna4321

Neues Mitglied
Ein kleiner Tipp von mir. Tu dir selbst einen Gefallen und achte darauf, wie du deine Variablen gut benennen kannst.
Java:
String antwort = "nein";
String antwort2 = "ja";

if (eingabe.equals(antwort)) { // was war gleich die Antwort? 42?

Das ist im Prinzip ein guter Ansatz, aber besser wäre ganz eindeutig:
Java:
String antwortNein = "nein";
String antwortJa = "ja";

if (eingabe.equals(antwortNein)) { // und schon muss man nicht mehr gucken was nun antwort noch mal war

Der üblicherweise gewählte Ansatz wäre es allerdings Konstanten zu definieren. In Java werden Konstanten normalerweise "final static" deklariert und der Name komplett groß geschrieben:
Java:
public class Mahnung {
    private final static String JA = "ja";
    private final static String NEIN = "nein";

    public static void main(String[] args) {
        // ...
        if (eingabe.equals(NEIN)) {
        // ...
    }
}
Oder besser - Enum type definieren. :)
 

JennyL

Bekanntes Mitglied

Joanna4321

Neues Mitglied
Quatsch...

ist völlig ausreichend, alles andere kostet nur Zeit (und Geld) sowohl beim Schreiben/Lesen wie auch beim Wiederverwenden/bei der Fehlerbehebung. Code muss nicht künstlich aufgebläht werden.

Allerdings sind zwei Buchstaben als Variablennamen fast immer zu wenig. Berechtigter Einwurf.
In generell es hängt von dem Projekt, aber was du geschrieben hast ist nicht richtig. Enum gibt die Typprüfung, String nicht. Wenn du typo machst die Compiler wird eine Warnung geben. Auch mit Enum ist es klar, welche Werten die Variable haben kann. Lesen sie Effective Java, wo das alles geschrieben ist.
 

LimDul

Top Contributor
Kommt immer drauf an. Wenn ich wie hier in einem kleinen Beispiel in einer Klasse bin - da finde ich Enum auch Overkill. Und solange ich die Strings auch als Konstanten definiere, habe ich eine ähnliche Sicherheit gegen Typos - solange halt die Konstanten genutzt werden. Das wird halt schwierig, wenn ich es Klassenübergreifend nutzen will. Da ist dann ein Enum oft sinnvoller
 

JennyL

Bekanntes Mitglied
Lesen sie Effective Java,
Du brauchst mich nicht Siezen. Das habe ich gelesen. Mit Effektivität hat das nicht das Geringste zu tun. Es kommt wie gesagt auf den Scope an und dieser ist hier klar eingegrenzt. Aber ich finde es immer wieder schön wenn jemand bemüht ist es richtig zu machen und in ein paar Jahren wirst du es verstehen.
 

JennyL

Bekanntes Mitglied
Und ich finde es immer wieder traurig, dass diese Leute dann dumm von der Seite angemacht werden
Wenn ich antworte und nicht ganz richtig antworte, muss ich auch mit einer Berichtigung leben können, oder eben den Mund halten. Oder willst du mir jetzt sagen, dass falsche Antworten dem Verständnis dienlicher sind/seien als richtige?

... dann verwende hierbei eben Enums, ohne hierbei einen praktischen Nutzen durch diese gewinnen zu können...
 

temi

Top Contributor
Wenn ich antworte und nicht ganz richtig antworte, muss ich auch mit einer Berichtigung leben können, oder eben den Mund halten. Oder willst du mir jetzt sagen, dass falsche Antworten dem Verständnis dienlicher sind/seien als richtige?

Erstens war die Antwort definitiv nicht falsch, denn bei mehreren Konstanten gleichen Typs kann es durchaus sinnvoll sein eine Enumeration als typsichere Alternative zu verwenden.

Zweitens macht der Ton die Musik. Vergleiche mal:
Kommt auf die Sichtweise und oder die Menge [...]
Kommt immer drauf an. Wenn ich wie hier [...]
Fällt dir was auf?
 
K

kneitzel

Gast
Das Thema hatten wir doch schon oft genug hier... Das ist halt die nette und freundliche Art von unserem Tobias.

Aber zu diesem OT Thema möchte ich nur anmerken:
Allerdings sind zwei Buchstaben als Variablennamen fast immer zu wenig. Berechtigter Einwurf.
Also das ist doch ein super Lernerfolg. Nach Massen an Code-"Lösungen" mit variablen s1, s2, ... ist das doch ein guter Ausblick. "Steter tropfen höhlt den Stein" - gewisse Lernerfolge sieht man da dann auch nach den ganzen Hinweisen in der Vergangenheit. Also statt sich über irgendwas womöglich zu ärgern sehe ich Grund zur Freude :)

Aber Schluss mit OT Kram. Der eigentliche Grund für meine Antwort ist natürlich ein anderer, denn ich will eine Aussage von @temi noch etwas erweitern.

Erstens war die Antwort definitiv nicht falsch, denn bei mehreren Konstanten gleichen Typs kann es durchaus sinnvoll sein eine Enumeration als typsichere Alternative zu verwenden.

Also ich sehe das nicht nur bezüglich der Anzahl der vorhandenen Konstanten sondern ggf. kommt da auch die Frage auf, wo das alles verwendet wird.

Und bei der Enumeration ist man auch direkt offen für:
- Refactorings um Code lesbarer zu machen / zu vereinfachen. Ist glaube ich auch schon etwas angeklungen, aber ist erst einmal egal.
- Offen für Erweiterungen - Evtl. will man das ja morgen Universeller machen. Die Enums können halt massiv erweitert werden, was bei einem String nicht geht.
- Code ist an einer klaren Stelle, wo er hin gehört, kein doppelter Code.

Die Konstanten sind gut, wenn man das wirklich nur an einer Stelle benötigt. Aber die Antworten ja/nein sind ja doch sehr universal.
Wenn man das als String Variablen definieren möchte, dann würde ich aber klar dazu raten, dass diese wirklich so wie von @temi in #4 gezeigt als Konstanten - also idealerweise public final static String

Und dann wird auch deutlich: Sobald man das in mehreren Klassen braucht, hat man entweder:
- doppelten Code (Die Konstanten sind in beiden Klassen vorhanden)
- unnötige Abhängigkeiten (Klasse1 hat dann ein Klasse2.Konstante)
- Oder man schiebt es in eine eigene Klasse, die dann als Sammelbecken dient: "Konstanten.Konstante" was auch extrem unschön ist.

==> Daher sehe ich auch, dass hier eine Klasse "Antworten" schnell Sinn machen kann. Und das sieht erst einmal nach einer reinen Aufzählung aus, daher bietet sich die spezielle Klasse "enum" an (Ehe ich angemacht(verhauen werde, weil jemandem die Bezeichnung als Klasse nicht passt: "a special kind of class type" JLS 8.9).
 
K

kneitzel

Gast
Keine Ahnung, welche Komplexe du hast, aber vielleicht wäre ein Psychologe der dir bei der Bewältigung helfen kann angebracht?
Ja danke, dass Du es noch einmal so schön demonstrierst, deine nette und freundliche Art.

Aber da frage ich mich: hast Du Dir schon überlegt, unter welchem Namen Du den nächsten Account anlegen wirst, wenn dieser auch gesperrt / gelöscht wurde?

Aber das ist jetzt komplett OT. Wenn Dich dieses Thema interessiert und Du evtl. Vorschläge haben willst für Namen für weitere Accounts, dann kannst Du ja einen eigenen Thread in der Plauderecke starten...
 

mihe7

Top Contributor
Um mal zurück zum Thema zu kommen, zwei Anmerkungen:
1. In dem Struktogramm steht nichts von einer Eingabe. Während bezahlt noch auf einen booleschen Wert hindeutet, ist das bei FM, AM usw. nicht der Fall.
2. Ist alles richtig, was hier geschrieben wurde. In einem Projekt, wo die Antworten mehrfach verwendet werden, macht es Sinn, über ein enum nachzudenken. Da das hier aber nur eine kleine Übungsaufgabe zu sein scheint, reicht der direkte Vergleich völlig und ein enum würde wenig (außer zusätzlichem Aufwand) bringen.
 
Ä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
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
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
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