"doppelte" if-Anweisung

Status
Nicht offen für weitere Antworten.
S

Susi

Gast
Hallo ... warum funktioniert dieser Code nicht? Kann mir jemand helfen?


Code:
/**
* Diese Klasse definiert Studenten in einem Uni-Verwaltungssystem.
* Sie beschreibt die Details von Studenten, die für unseren Kontext
* relevant sind.
*
* @author  Michael Kölling und David J. Barnes
* @version 1.0  (3. Januar 2003)
*/
public class Student
{
    // der volle Name des Studierenden
    private String name;
    // seine Matrikelnummer
    private String matrikelnummer;
    // die Anzahl der bereits erworbenen Scheine
    private int scheine;

    /**
     * Erzeuge einen neuen Studenten mit Name und Matrikelnummer.
     * Wenn weniger als 4 Buchstaben und weniger als 3 Ziffern eingegeben werden
     * gib eine Warnung aus, führe die Eingabe aber trotzdem durch.
     */
     public Student(String vollerName, String matrNr)
    {
        if (vollerName.length()<4)
        {
        System.out.println("Bitte geben Sie mindestens einen vier-stelligen Namen ein!");
        }
        if  (matrNr.length()<3)
        {
        System.out.println("Bitte geben Sie mindestens eine drei-stellige Matrikelnummer ein!");
        }
       
        name = vollerName;
        matrikelnummer = matrNr;
        scheine = 0;
   
    }


    /**
     * Liefere den vollen Namen dieses Studenten.
     */
    public String gibName()
    {
        return name;
    }

    /**
     * Trage einen neuen Namen ein.
     */
    public void nameAendern(String neuerName)
    {
        name = neuerName;
    }

    /**
     * Liefere die Matrikelnummer dieses Studenten.
     */
    public String gibMatrikelnummer()
    {
        return matrikelnummer;
    }

    /**
     * Erhöhe die Anzahl der erworbenen Scheine.
     */
    public void erhoeheScheinanzahl(int weitereScheine)
    {
        scheine += weitereScheine;
    }

    /**
     * Liefere die Anzahl der bereits erworbenen Scheine.
     */
    public int gibScheinanzahl()
    {
        return scheine;
    }

   /**
     * Liefere den Login-Namen. Der Login-Name ist eine Kombination der
     * ersten vier Buchstaben des Namens mit den ersten drei Ziffern der
     * Matrikelnummer.
     * Wenn keine vier Buchstaben eingegeben wurden liefere
     * einfach die eingegeben Buchstaben ab, wenn mehr als 4 Buchstaben eingegeben
     * wurden dann berschränke den Buchstaben-Teil im Login-Namen auf die ersten 4 Ziffern.
     * Wenn keine drei Ziffern eingegeben wurden liefere
     * einfach die eingegeben Ziffern ab, wenn mehr als 3 Ziffern eingegeben
     * wurden dann berschränke den Ziffern-Teil im Login-Namen auf die ersten 3 Ziffern.
     */
    public String gibLoginName()
   
    {
    if (name.length()<4){
        return name;
        }
    else{
    return name.substring(0,4);
    }
   
    {
    if (matrikelnummer.length()<3){
        return matrikelnummer;
    }
    else{
        return matrikelnummer.substring(0,3);
    }
    }
   
    /**
     * Gib Name und Matrikelnummer auf der Konsole aus.
     */
    public void ausgeben()
    {
        System.out.println(name + " (" + matrikelnummer + ")");
    }
}

liegt das Problem an der doppelten if-Anweisung bei "gib LoginName"? Ist sie falsch geschrieben? Müsste ja praktisch name+matrikelnummer gleichzeitung auf ihre
substrings untersuchen?
Wenn mir jemand helfen kann bitte auf niedrigstem Niveau Very Happy ...haben JAVA-Programmierung erst seit ein paar Wochen und ich kann keine Befehle verwenden die wir noch gar nicht gelernt haben bzw. nie lernen werden..

Vielen herzlichen Dank schon mal im voraus.
LG Susi
 

dieta

Top Contributor
Wenn ich das richtig verstehe, müsste das klappen:

Code:
public String gibLoginName()
{
    String out = "";
    
    if (name.length()<4)
    {
        out = out + name;
    }
    else
    {
        out = out + name.substring(0,4);
    }
   
    //{ <-- ist die Klammer da erwünscht?
    if (matrikelnummer.length()<3)
    {
        out = out + matrikelnummer;
    }
    else
    {
       out = out + matrikelnummer.substring(0,3);
    }
    
    return out;
}
 

Murray

Top Contributor
Die return-Anweisung sorgt ja dafür, dass die Methode verlassen wird. der Code danach kann nicht mehr ausgeführt werden. In Deinem Beispiel sollte der Compiler das eigentlich bemerken und "unreachable code" anmeckern.

Abhilfe (z.B.):
Code:
public String gibLoginName() {

    String nn = null;
    if (name.length()<4){
        nn= name;
    } else{
      nn = name.substring(0,4);
    }
   
    String mn = null;
    if (matrikelnummer.length()<3){
        mn = matrikelnummer;
    } else{
        mn = matrikelnummer.substring(0,3);
    }
    return nn+mn;
 }

Dabei hat man unschönerweise zweimal ziemlich ähnlichen Code; den kann man besser in eine eigene Methode auslagern:

Code:
private String stripStr( String str, in len) {
   if ( str.length() <= len) {
      return str;
   } else {
      return str.substring( 0 , len);
   }
}

public String gibLoginName() {

    return stripStr( name, 4) +  stripStr( matrikelnummer, 3);
 }

Die Methode stripStr kann man auch noch kürzer schreiben:
Code:
private String stripStr( String str, in len) {
   return  ( str.length() <= len) ? str : str.substring( 0 , len);
}
 

André Uhres

Top Contributor
Ich stimme jagdfalke zu.
Warum sollte gibLoginName nicht auch genau das zurückgeben?
Nämliche name! Und sonst nix.
 

Murray

Top Contributor
André Uhres hat gesagt.:
Warum sollte gibLoginName nicht auch genau das zurückgeben?
Nämliche name! Und sonst nix.

Die Benamung ist vielleicht etwas unglücklich, die Sematik ist aber doch offenbar so vorgegeben:

Susi hat gesagt.:
Code:
   /**
     * Liefere den Login-Namen. Der Login-Name ist eine Kombination der
     * ersten vier Buchstaben des Namens mit den ersten drei Ziffern der
     * Matrikelnummer.
     * Wenn keine vier Buchstaben eingegeben wurden liefere
     * einfach die eingegeben Buchstaben ab, wenn mehr als 4 Buchstaben eingegeben
     * wurden dann berschränke den Buchstaben-Teil im Login-Namen auf die ersten 4 Ziffern.
     * Wenn keine drei Ziffern eingegeben wurden liefere
     * einfach die eingegeben Ziffern ab, wenn mehr als 3 Ziffern eingegeben
     * wurden dann berschränke den Ziffern-Teil im Login-Namen auf die ersten 3 Ziffern.
     */
    public String gibLoginName()
Offenbar ist also eine Methode gibLoginName gefragt, die aus den Membern name und matrikelnummer einen neuen String erzeugt.
 

Murray

Top Contributor
deathbyaclown hat gesagt.:
Murray hat gesagt.:
Die Benamung ist vielleicht etwas unglücklich, die Sematik ist aber doch offenbar so vorgegeben:
Benamung... Schelm der sich da verliest....
Wahrscheinlich handelt es sich um künstliche Benamung, oder es ist ein Namenstrang verknotet. Vielleicht sind auch Namenzellen fehlgebildet (soll ja zu harten Fahradsätteln liegen können)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
D Doppelte For Schleife / Array Java Basics - Anfänger-Themen 3
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
L Doppelte Schleife Anpassen Java Basics - Anfänger-Themen 5
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
S CSV auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 8
S Doppelte Liste Einfügen Java Basics - Anfänger-Themen 1
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
K Input/Output Doppelte Ausgabe Java Basics - Anfänger-Themen 5
S Erste Schritte Doppelte Ausführung? Java Basics - Anfänger-Themen 4
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
S ArrayList Gruppieren, "Doppelte Werte" Addieren Java Basics - Anfänger-Themen 5
O Doppelte For-Scheife Java Basics - Anfänger-Themen 6
E Array doppelte Einträge Java Basics - Anfänger-Themen 2
S Variablen Array in ArrayList auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 4
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
R Doppelte löschen Java Basics - Anfänger-Themen 6
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
M doppelte Einträge Emailempfänger... Java Basics - Anfänger-Themen 35
G txt-File als DB>doppelte Einträge verhindern/Suche/... Java Basics - Anfänger-Themen 10
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
H Datentypen Doppelte Verkette Liste - Verständnissproblem Java Basics - Anfänger-Themen 5
T Doppelte Liste Java Basics - Anfänger-Themen 8
R Schleife Doppelte Daten löschen Java Basics - Anfänger-Themen 3
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
Luk10 Doppelte for-schleife Java Basics - Anfänger-Themen 7
P Doppelte Einträge in mehreren Textfiles finden und ausgeben Java Basics - Anfänger-Themen 8
T Array: Doppelte Charakteren löschen - Ein Lösungsversuch Java Basics - Anfänger-Themen 37
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
J doppelte Einträge in einem Array Java Basics - Anfänger-Themen 7
M Aufgabe: Array auf doppelte Zahl prüfen Java Basics - Anfänger-Themen 8
-horn- Doppelte Einträge entfernen, aus Array, List oder sonstwas Java Basics - Anfänger-Themen 9
G _NUR_ doppelte Einträge in einem Array behalten Java Basics - Anfänger-Themen 3
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
G doppelte Einträge im String Array löschen Java Basics - Anfänger-Themen 21
C Doppelte Punktnotation Java Basics - Anfänger-Themen 2
0 ArrayList - doppelte Einträge entfernen? Java Basics - Anfänger-Themen 9
S Methode, um doppelte Einträge in Array zu finden Java Basics - Anfänger-Themen 5
F doppelte Elemente in HashSet Java Basics - Anfänger-Themen 5
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
M Doppelte Einträge in einer datei löschen(nach timestamp)! Java Basics - Anfänger-Themen 4
D Doppelte Einträge einer Liste löschen Java Basics - Anfänger-Themen 6
B 2 ELists vergleichen und doppelte Einträge löschen Java Basics - Anfänger-Themen 11
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
F Doppelte Datensätze zusammenziehen Java Basics - Anfänger-Themen 2
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
T If anweisung Java Basics - Anfänger-Themen 5
C Scanner und If-Anweisung in Kombi Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
R Wie würde hier die if-Anweisung aussehen? Java Basics - Anfänger-Themen 18
B break Anweisung Java Basics - Anfänger-Themen 13
C Wie kann ich einen User Input mit einer If-Anweisung verbinden? Java Basics - Anfänger-Themen 5
T Not a Statement/Illegal Start of expression bei for Anweisung Java Basics - Anfänger-Themen 6
H Cäsar chiffrierung ohne if-Anweisung Java Basics - Anfänger-Themen 5
D kann man vor dem CSVRecord, replace Anweisung anwenden ? Java Basics - Anfänger-Themen 2
B Erste Schritte if Anweisung mit Wert Übernahme Java Basics - Anfänger-Themen 3
C Anweisung Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
K if Anweisung Java Basics - Anfänger-Themen 3
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert [SQL] SQL als Anweisung mit Spezial-Fall EclipseEclipse Java Basics - Anfänger-Themen 8
J If Anweisung in Schleife einbinden Java Basics - Anfänger-Themen 7
JavaNewbie2.0 Zur Anweisung zurück Java Basics - Anfänger-Themen 13
J Erste Schritte Vorsicht Spaghetti-Code! Wie verschachtel ich meine If-Anweisung??? Java Basics - Anfänger-Themen 4
L if-Anweisung Java Basics - Anfänger-Themen 5
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
Q Variablen If Anweisung, kleiner fehler Java Basics - Anfänger-Themen 8
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
L If Anweisung mit ArrayList Probleme Java Basics - Anfänger-Themen 6
OlafHD String in einer If-Anweisung Vergleichen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben