Java Hilfe (BlueJ)

This is a discussion on Java Hilfe (BlueJ) within the Deutsch board part of the D3scene in your language category; Hey, ich bin ein totaler Noob was Java angeht :D, aber ich mach das Nötigste für den Informatikunterricht =P In ...

Results 1 to 3 of 3
  1. #1
    Jolinar's Avatar
    Jolinar is offline rapid response team #1


    Array
    Join Date
    May 2008
    Location
    unicorn island
    Posts
    3,208
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)
    Rep Power
    22
    Reputation
    2485

    Java Hilfe (BlueJ)

    Hey,

    ich bin ein totaler Noob was Java angeht :D, aber ich mach das Nötigste für den Informatikunterricht =P
    In any case, versuche ich mich grad an einer simplen Ampel(-schaltung), die aus drei Objekten aufgebaut ist, lampeOben, lampeMitte und lampeUnten der vorgegebenen Klasse "LAMPE".
    Mein Problem liegt bei der Funktion "Weiterschalten()" (um die Ampel später in eine komplette Kreuzung einzubinden). Das mit der if-else-Konstruktion klappt nicht so wie ich das möchte. =P

    Der komplette Quelltext:
    Code:
    public class AMPEL
    {
        int x;
        int y;
        String ampelphase;
        
        
        LAMPE lampeOben;
        LAMPE lampeMitte;
        LAMPE lampeUnten;
    
    
        public AMPEL(int x, int y, String ampelphase)
        {
            lampeOben = new LAMPE();
            lampeMitte = new LAMPE();
            lampeUnten = new LAMPE();
            if(ampelphase.equals("gruen")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("schwarz");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("schwarz");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("gruen");
            }
            if(ampelphase.equals("rot")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("rot");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("schwarz");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz"); 
            }
            if(ampelphase.equals("rotgelb")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("rot");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("gelb");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz"); 
            }
            if(ampelphase.equals("aus")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("schwarz");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("schwarz");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz");            
            }
            if(ampelphase.equals("gelb")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("schwarz");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("gelb");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz");            
            }
        }
        void GruenSetzen() {
            lampeOben.FarbeSetzen("schwarz");
            lampeMitte.FarbeSetzen("schwarz");
            lampeUnten.FarbeSetzen("gruen");
        }
        void GelbSetzen() {
            lampeOben.FarbeSetzen("schwarz");
            lampeMitte.FarbeSetzen("gelb");
            lampeUnten.FarbeSetzen("schwarz");
        }
        void RotSetzen() {
            lampeOben.FarbeSetzen("rot");
            lampeMitte.FarbeSetzen("schwarz");
            lampeUnten.FarbeSetzen("schwarz");
        }
        void RotgelbSetzen() {
            lampeOben.FarbeSetzen("rot");
            lampeMitte.FarbeSetzen("gelb");
            lampeUnten.FarbeSetzen("schwarz");
        }
        void AusSetzen() {
            lampeOben.FarbeSetzen("schwarz");
            lampeMitte.FarbeSetzen("schwarz");
            lampeUnten.FarbeSetzen("schwarz");
        }
        public void PositionSetzen(int newx,int newy) {
            x = newx;
            y = newy;
            lampeOben.PositionSetzen(newx,newy);
            lampeMitte.PositionSetzen(newx,newy+1);
            lampeUnten.PositionSetzen(newx,newy+2);
        }
        public void Weiterschalten() {
            if (ampelphase == "rot") {
                RotgelbSetzen();
            }
            else {
                if (ampelphase == "rotgelb") {
                    GruenSetzen();
                }
                else {
                    if (ampelphase == "gruen") {
                        GelbSetzen();
                    }
                    else {
                        if (ampelphase == "gelb") {
                        RotSetzen();
                    }
                    }
                }
            }
        }
        public void AmpelphaseSetzen(String ampelphase) {
            if(ampelphase.equals("gruen")) {
                GruenSetzen();
            }
            if(ampelphase.equals("rot")) {
                RotSetzen();         
            }
            if(ampelphase.equals("rotgelb")) {
                RotgelbSetzen();        
            }
            if(ampelphase.equals("aus")) {
                AusSetzen();
            }
            if(ampelphase.equals("gelb")) {
                GelbSetzen();
            }
        }
    }
    Die Problemstelle:
    Code:
        public void Weiterschalten() {
            if (ampelphase == "rot") {
                RotgelbSetzen();
            }
            else {
                if (ampelphase == "rotgelb") {
                    GruenSetzen();
                }
                else {
                    if (ampelphase == "gruen") {
                        GelbSetzen();
                    }
                    else {
                        if (ampelphase == "gelb") {
                        RotSetzen();
                    }
                    }
                }
            }
        }
    Mit dieser if-Konstruktion klappt garnichts.
    Egal, welche Ampelphase gerade aktiv ist, Weiterschalten() schaltet die Ampel immer auf "rot".

    Kann mir hier vllt. jemand helfen? Hab schon viel rumprobiert, aber mein minderes Wissen reicht einfach nicht aus. Vielleicht ist es auch nur ein kleiner Fehler den ich übersehen hab.
    Wer mir dabei hilft, es zum Laufen zu bringen kriegt +rep :)



    Jolinar


  2. #2
    Qazzy is offline Advanced Hacker


    Array
    Join Date
    Aug 2007
    Posts
    316
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    17
    Reputation
    1431
    Your professor might facepalm with your Weiterschalten() lol is this your 1st programming class?

    This is a better way:

    Code:
    public void Weiterschalten() 
    {
    	if (ampelphase == "rot") 
    	{
    		RotgelbSetzen();
    	}
    	else if (ampelphase == "rotgelb") 
    	{
    		GruenSetzen();
    	}
    	else if (ampelphase == "gruen") 
    	{
    		GelbSetzen();
    	}
    	else if (ampelphase == "gelb") 
    	{
    		RotSetzen();
    	}
    	else 
    	{
    		// Don't understand ampelphase
    	}
    }

  3. #3
    Jolinar's Avatar
    Jolinar is offline rapid response team #1


    Array
    Join Date
    May 2008
    Location
    unicorn island
    Posts
    3,208
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)
    Rep Power
    22
    Reputation
    2485
    Code:
    public class AMPEL
    {
        int x;
        int y;
        String ampelphase;
        
        
        LAMPE lampeOben;
        LAMPE lampeMitte;
        LAMPE lampeUnten;
    
    
        public AMPEL(int x, int y, String _ampelphase)
        {
            ampelphase = _ampelphase;
            lampeOben = new LAMPE();
            lampeMitte = new LAMPE();
            lampeUnten = new LAMPE();
            if(ampelphase.equals("gruen")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("schwarz");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("schwarz");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("gruen");
            }
            if(ampelphase.equals("rot")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("rot");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("schwarz");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz"); 
            }
            if(ampelphase.equals("rotgelb")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("rot");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("gelb");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz"); 
                ampelphase = "rotgelb";
            }
            if(ampelphase.equals("aus")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("schwarz");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("schwarz");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz");            
            }
            if(ampelphase.equals("gelb")) {
                lampeOben.PositionSetzen(x,y);
                lampeOben.FarbeSetzen("schwarz");
                lampeMitte.PositionSetzen(x,y+1);
                lampeMitte.FarbeSetzen("gelb");
                lampeUnten.PositionSetzen(x,y+2);
                lampeUnten.FarbeSetzen("schwarz");   
            }
        }
        void GruenSetzen() {
            lampeOben.FarbeSetzen("schwarz");
            lampeMitte.FarbeSetzen("schwarz");
            lampeUnten.FarbeSetzen("gruen");
            ampelphase = "gruen";
        }
        void GelbSetzen() {
            lampeOben.FarbeSetzen("schwarz");
            lampeMitte.FarbeSetzen("gelb");
            lampeUnten.FarbeSetzen("schwarz");
            ampelphase = "gelb";
        }
        void RotSetzen() {
            lampeOben.FarbeSetzen("rot");
            lampeMitte.FarbeSetzen("schwarz");
            lampeUnten.FarbeSetzen("schwarz");
            ampelphase = "rot";
        }
        void RotgelbSetzen() {
            lampeOben.FarbeSetzen("rot");
            lampeMitte.FarbeSetzen("gelb");
            lampeUnten.FarbeSetzen("schwarz");
            ampelphase = "rotgelb";
        }
        void AusSetzen() {
            lampeOben.FarbeSetzen("schwarz");
            lampeMitte.FarbeSetzen("schwarz");
            lampeUnten.FarbeSetzen("schwarz");
        }
        public void PositionSetzen(int newx,int newy) {
            x = newx;
            y = newy;
            lampeOben.PositionSetzen(newx,newy);
            lampeMitte.PositionSetzen(newx,newy+1);
            lampeUnten.PositionSetzen(newx,newy+2);
        }
        public void Weiterschalten() 
    {
        if (ampelphase == "rot") 
        {
            RotgelbSetzen();
        }
        else if (ampelphase == "rotgelb") 
        {
            GruenSetzen();
        }
        else if (ampelphase == "gruen") 
        {
            GelbSetzen();
        }
        else if (ampelphase == "gelb") 
        {
            RotSetzen();
        }
    }
        public void AmpelphaseSetzen(String ampelphase) {
            if(ampelphase.equals("gruen")) {
                GruenSetzen();
            }
            if(ampelphase.equals("rot")) {
                RotSetzen();         
            }
            if(ampelphase.equals("rotgelb")) {
                RotgelbSetzen();        
            }
            if(ampelphase.equals("aus")) {
                AusSetzen();
            }
            if(ampelphase.equals("gelb")) {
                GelbSetzen();
            }
        }
    }
    This worked
    Thanks Qazzy, I owe you big time ♥


Similar Threads

  1. Hilfe!!!
    By DISTURBED in forum Deutsch
    Replies: 7
    Last Post: 07-08-2009, 04:28 PM
  2. Brauche eure Hilfe!
    By Tracky in forum Deutsch
    Replies: 4
    Last Post: 06-07-2009, 09:19 PM
  3. Dringend Hilfe
    By Wolfy in forum Deutsch
    Replies: 6
    Last Post: 02-19-2009, 03:32 PM
  4. hilfe :) bei windows sp3
    By engel in forum Deutsch
    Replies: 3
    Last Post: 03-24-2008, 06:10 PM
  5. brauche hilfe :D
    By Infernal in forum Deutsch
    Replies: 9
    Last Post: 04-06-2007, 04:28 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •