[Java] Problem mit verzweigung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Johnny990, 27. Februar 2007 .

Schlagworte:
  1. 27. Februar 2007
    Problem mit verzweigung

    Hab schon wieder mal ein kleines Problemchen
    folgender Code:


    Code:
    abstract class Skisprungergebnis implements Comparable
    {
    //Attribute
     Skispringer springer= new Skispringer();
     Skisprungschanze schanze = new Skisprungschanze("Hans", 10);
     float haltungsnoten[]= new float [4];
     static float weite,zusatz,abzug;
     static int x,y,z;
     
    // Methoden
     float getHaltungsnoten(int i)
     {
     return haltungsnoten[i];
     }
     float weite()
     {
     return weite;
     }
     //ebenso
     public float getWeitenPunkte(int x)
     {
    
     if(schanze.kpunkt==Skisprungergebnis.weite)
     {
     this.x=60;
     return x;
     }
     
     else if(Skisprungergebnis.weite > schanze.kpunkt)
     {
     zusatz = this.weite - schanze.kpunkt;
     }
     return zusatz*2+60;
     
     else if(Skisprungergebnis.weite<schanze.kpunkt)
     {
     abzug = schanze.kpunkt - this.weite;
     }
     return 60 -(abzug*2);
     }
     
     int getHaltungspunkte(int y)
     {
     this.y=y;
     return y;
     }
     
     public int getGesamtPunkte(int z)
     {
     this.z=z;
     return z;
     }
     
     public int compareTo(Object o)
     {
     return 1;
     }
     
     
     
     
    }
    
    jetzt kommt bei mir immer bei der 3. else if verzweigung--> 'else' without 'if'! WARUM??????


    Vielen Dank schon mal.....
     
  2. 27. Februar 2007
    AW: Problem mit verzweigung

    PHP:
             else if( Skisprungergebnis . weite < schanze . kpunkt )
            {
                
    abzug  schanze . kpunkt  this . weite ;
            }
            return 
    60  -( abzug * 2 );
    ^^ der Part steht da quasi ohne zusammenhang .....

    Knusperkeks
     
  3. 27. Februar 2007
    AW: Problem mit verzweigung

    ok, hab die lösung selber gefunden! man muss als returnwert immer nen festen wert angeben! Also zb return abzug;
     
  4. 27. Februar 2007
    AW: Problem mit verzweigung

    Nein. Muss man nicht. Gegebenenfalls musst du das einklammern.
     
  5. 28. Februar 2007
    AW: Problem mit verzweigung

    Das Problem, das Knusperkeks meinte ist folgendes. Das Problem liegt hier:
    Code:
    if(Skisprungergebnis.weite > schanze.kpunkt)
     {
     [COLOR="Red"]zusatz = this.weite - schanze.kpunkt;[/COLOR]
     }
     [COLOR="Green"]return zusatz*2+60;[/COLOR]
     
     else if(Skisprungergebnis.weite<schanze.kpunkt)
     {
     abzug = schanze.kpunkt - this.weite;
     }
     return 60 -(abzug*2);
    Als erstes wird die if-Abfrage aufgerufen. Nachdem das abgehandelt ist, dann macht das Programm weiter... sollte die "false" sein, dann macht das Programm weiter... er überspringt den rot gefärbten Teil. Nur: er findet danach nicht direkt sein "else". Er findet ein "return" (grün), welches er ausführt.
    Die if-Verzweigung ist damit zu Ende, jedenfalls für den Compiler.
    Jetzt geht der Compiler den Quelltext durch, und findet ein Herrenloses "else". Und daher spuckt er dir diese Meldung aus. Ich denke, dass du hier einfach nur einen Fehler eingebaut hast. Ich denke du meinst das so:
    Code:
    if(Skisprungergebnis.weite > schanze.kpunkt)
     {
     zusatz = this.weite - schanze.kpunkt;
     return zusatz*2+60;
     } 
     else if(Skisprungergebnis.weite<schanze.kpunkt)
     {
     abzug = schanze.kpunkt - this.weite;
     }
     return 60 -(abzug*2);
    Das Problem müsste somit gelöst sein.

    Gruß vom Niederrhein(er)
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.