if/else-Problem

Status
Nicht offen für weitere Antworten.
T

Torben

Gast
Hallo hoffe jemand von euch Profis kann mir erklären warum meine if/else-Anweisungen bei public void setzeRefNummer falsch ist.
Aufgabe: Es sollte bei mindestens 3 Zeichen eine neue Referenznummer übernommen werden, wenn weniger als 3 Zeichen eingegeben werden soll nix gemacht werden, nur eine Fehlermeldung in der Konsole erscheinen. Leider funktioniert dieser eine Teil nicht ... alles andere klappt super!

Code:
/**
 * Eine Klasse, deren Exemplare Informationen über ein Buch halten.
 * Dies könnte Teil einer größeren Anwendung sein, einer
 * Bibliothekssoftware beispielsweise.
 *
 * @author (Ihren Namen hier eintragen.)
 * @version (das heutige Datum eintragen.)
 */
class Buch
{
    // Exemplarvariablen
    private String autor;
    private String titel;
    private int seiten;
    private String refNummer;

    /**
     * Setze den Autor und den Titel, wenn ein Exemplar erzeugt wird.
     */
    public Buch(String buchautor, String buchtitel, int seitenzahl)
    {
        autor = buchautor;
        titel = buchtitel;
        seiten = seitenzahl;
        refNummer = ("");
    }

    public String gibAutor()
    {
        return autor;
    }
    
    public String gibTitel()
    {
        return titel;
    }
    
    public int gibSeiten()
    {
        return seiten;
    }
   
     
     
     /**
     * Aufgabe: Es sollte bei mindestens 3 Zeichen eine neue Referenznummer 
     * übernommen werden, wenn weniger als 3 Zeichen eingegeben werden soll 
     * nix gemacht werden, nur eine Fehlermeldung in der Konsole erscheinen.
     */
    
    
    public void setzeRefNummer(String ref)
    {
    if (ref.length()>=3);
    {
    refNummer = ref;
    }
    
    else {
    System.out.println("FEHLER: Die Referenznummer muss mindestens 3 Zeichen lang sein");
    }
 }

   public String gibRefNummer()
    {
        return refNummer;
    }
    
    
    public void autorAusgeben()
    {
    System.out.println("Autor des Buches ist : " + autor);
    }
    
    public void titelAusgeben()
    {
    System.out.println("Titel des Buches ist : " + titel);
    }
    
    /**
     * Alle Details ausgeben (auf der Konsole): 1. Autor 2. Titel 3. Seitenzahl 
     * 4. Referenznummer für Bibiliothek - Wurde keine Referenznummer vergeben 
     * Meldung ausgeben "Keine Referenznummer vergeben".
     */
    
    public void detailsAusgeben()  
   {
    if (refNummer.length()>=1){
          System.out.println("Autor des Buches ist : " + autor);
          System.out.println("Titel des Buches ist : " + titel);
          System.out.println("Das Buch hat "+seiten+" Seiten");
          System.out.println("Die Referenznummer lautet: "+refNummer);
        }
    else{
           System.out.println("Autor des Buches ist : " + autor);
           System.out.println("Titel des Buches ist : " + titel);
           System.out.println("Das Buch hat "+seiten+" Seiten");
           System.out.println("Es wurde keine Referenznummer vergeben");
        }
}
}
 

Timmah

Bekanntes Mitglied
Code:
if (ref.length()>=3);

Mach mal das abschließende Semikolon weg :-D
 
T

Torben

Gast
Der Code funktioniert jetzt zwar .... aber man sollte ja Dublikationen möglichst vermeiden. In meinem Anfänger-Code ja noch nicht so schlimm aber unser Prof. meinte wir sollen uns das schon am Anfang abgewöhnen.

Wie könnte ich das noch anderes formulieren und die Code-Dublikation zu vermeiden???

Code:
public void detailsAusgeben() 
   {
    if (refNummer.length()>=1){
          System.out.println("Autor des Buches ist : " + autor);
          System.out.println("Titel des Buches ist : " + titel);
          System.out.println("Das Buch hat "+seiten+" Seiten");
          System.out.println("Die Referenznummer lautet: "+refNummer);
        }
    else{
           System.out.println("Autor des Buches ist : " + autor);
           System.out.println("Titel des Buches ist : " + titel);
           System.out.println("Das Buch hat "+seiten+" Seiten");
           System.out.println("Es wurde keine Referenznummer vergeben");
        }
}
 

Jockel

Top Contributor
Code:
public void detailsAusgeben() 
   {
          System.out.println("Autor des Buches ist : " + autor);
          System.out.println("Titel des Buches ist : " + titel);
          System.out.println("Das Buch hat "+seiten+" Seiten");
          System.out.println("Die Referenznummer lautet: "+refNummer);
}
 
T

Torben

Gast
@ Jockel ... und was macht das für einen Sinn? ...damit wird ja die Fehlermeldung nicht ausgegeben wenn keine RefNr vergeben wurde !
 

Jockel

Top Contributor
Du schreibst in deinem Code: wenn 'Länge' größer oder gleich 1 ist, dann gebe Autor, Titel, Seitenzahl und Referenznummer aus. Wenn die 'Länge' einen anderen Wert hat, gebe diese Informationen dennoch aus.
Eine Fehlermeldung sehe ich in deinem Code nämlich nicht. Wenn du eine Fehlermeldung ausgeben willst, solltest du diese auch schon in den else-Zweig schreiben ;- )

[edit]
Argh, sehe es jetzt, dass sich die Zeilen doch unterscheiden. Tschuldigung. Also nochmal:

Code:
public void detailsAusgeben() 
   { 
    System.out.println("Autor des Buches ist : " + autor); 
    System.out.println("Titel des Buches ist : " + titel); 
    System.out.println("Das Buch hat "+seiten+" Seiten"); 

    if (refNummer.length()>=1){ 
          System.out.println("Die Referenznummer lautet: "+refNummer); 
        } 
    else{ 
           System.out.println("Es wurde keine Referenznummer vergeben"); 
        } 
}

Das würde die doppelten Zeilen eliminieren. Macht logisch aber wahrscheinlich nicht allzu viel Sinn, da ein Buch wohl eine Referenznummer haben muss. Besser wäre dann wohl:

Code:
public void detailsAusgeben() 
   { 
    if (refNummer.length()>=1){ 
          System.out.println("Autor des Buches ist : " + autor); 
          System.out.println("Titel des Buches ist : " + titel); 
          System.out.println("Das Buch hat "+seiten+" Seiten"); 
          System.out.println("Die Referenznummer lautet: "+refNummer); 
        } 
    else{ 
           System.out.println("Es wurde keine Referenznummer vergeben"); 
        } 
}

Zumindest, wenn meine Annahme richtig ist, dass ein Buch, eine Referenznummer aufweisen muss und die restlichen Informationen bei fehlender Nummer uninteressant sind.
 
G

Guest

Gast
Im else-Zweig steht: "Es wurde keine Referenznummer vergeben"
 
T

Torben

Gast
...du denkst zu praktisch :)

ist halt einfach nur eine sehr theoretische Frage die mit dem Alltag nix zu tun hat.
Das Problem ich muss sie lösen ... Deswegen mache ich mir schon lange keine Gedanken mehr ob es Sinn macht oder nicht :)

Mit der Fehlermeldung sollte das andere Zeugs auch mit ausgegeben werden? Nun die berechtigte Frage an die Praxis ... ist das überhaupt möglich, oder liegt hier der theoretische Gedankenfehler eines JAVA-Buch-Autors (Barnes,Kölling)
 

Jockel

Top Contributor
Solange die Werte, die ausgegeben werden, einen Wert besitzen, können diese auch ausgegeben werden. Wenn eine der Variablen allerdings einen NULL-Wert (anders gesagt: keinen Wert) enthalten, bricht das Programm mit einer Nullpointer-Exception ab.
Setzt man nun voraus, dass die Variablen immer einen Wert haben, mit Ausnahme der Variable refNummer, so sollte das erste Code-Fragment meines letzten Posts funktionieren.

btw.: das mit dem zu praktisch denken, nehme ich jetzt einfach mal als Kompliment ,-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
Y Problem mit If-Else Verzweigung! Java Basics - Anfänger-Themen 9
T If, else Problem Java Basics - Anfänger-Themen 12
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
S if und else problem... Java Basics - Anfänger-Themen 13
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
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
A ein if else problem Java Basics - Anfänger-Themen 13
B Problem mit Variable und if/else Java Basics - Anfänger-Themen 6
M Problem mit der For Schleife (else funzt nicht richtig) Java Basics - Anfänger-Themen 10
B unlogisches Problem mit Tastatureingabe und If-Else Java Basics - Anfänger-Themen 4
O Problem mit else Java Basics - Anfänger-Themen 8
A if else problem Java Basics - Anfänger-Themen 8
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
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
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
C IF-Else Verknüpfungen Java Basics - Anfänger-Themen 10
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
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
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
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
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
N If-else-If Leiter Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben