Avatar billede sy22 Nybegynder
21. marts 2002 - 21:08 Der er 2 kommentarer og
1 løsning

NullPointerException

Hej Folk, jeg får desværre en nullpointerexception, når jeg fra min knapfunktion kalder en metode fra en anden klasse selvom jeg har oprettet objekt.

Det er gL.sFEPL metoden der giver problemer!

her er som følger:
1-min director klasse der kalder
2-superklassen til "funktionsklassen"
3-subklassen med de pågældende funktioner

1:
import aLibrary.*;
import java.awt.*;
/**
* directorklasse, det laver 3bw og indeholder metoder til at udregne indhold
* af raavarer og samlet energiindhold, samt udskrive opskrift.
* @author (simon_frans)
* @version (1.0)
*/
public class Director extends A3ButtonHandler
{
    private A3ButtonWindow a3bw;
    private AView av;
    private ATextArea txt2, txt3;
    private ALabel label1, label2, label3;
    Kartofler kT;
    Loeg lG;
    Smoer sM;
    Ost oS;
    Guleroedder gR;
    OkseKoed oK;
    LasagnePlader lP;
    Mel mL;
    Tomat tM;
    Maelk mK;
    GrundLasagne gL;
    BechSauce bS;
    Boef bF;
    RaastKart rK;


    public Director(){
        a3bw = new A3ButtonWindow(this);
        //av = new AView(0,0,600,400);
        label1 = new ALabel(5,350,300,150);
        label2 = new ALabel(15,170,250,150);
        label3 = new ALabel(300,170,290,150);
        txt2 = new ATextArea(20,50,250,150);
        txt3 = new ATextArea(320,50,250,150);
        label1.place(a3bw);
        label2.place(a3bw);
        label3.place(a3bw);
        txt2.place(a3bw);
        txt3.place(a3bw);
        a3bw.repaint();
        //av.place(a3bw);
        label1.setFontSize(16);
        label2.setFontSize(14);
        label3.setFontSize(14);
        txt2.setFontSize(12);
        txt3.setFontSize(12);
        a3bw.setColor(Color.orange);
        label1.setColor(Color.blue);
        label1.setText("Lasagne");
        label2.setText("Brug mid knap for opskrift");
        label3.setText("Brug right knap for energiprocenter");
        a3bw.repaint();
        kT = new Kartofler();
        lG = new Loeg();
        sM = new Smoer();
        oS = new Ost();
        gR = new Guleroedder();
        oK = new OkseKoed();
        lP = new LasagnePlader();
        mL = new Mel();
        tM = new Tomat();
        mK = new Maelk();
        gL = new GrundLasagne();
        bS = new BechSauce();
        bF = new Boef();
        rK = new RaastKart();
        a3bw.repaint();
    }


    public void leftAction(){

        if (label1.getText().equals("Lasagne")){  //label1.getText().equals( "lasagne" )
            label1.setText("Boef med Raastegte Kartofler");
        }else{
            label1.setText("Lasagne");
        a3bw.repaint();
    }
}
    public void midAction(){
        if (label1.getText().equals("Lasagne")){
            txt2.appendln("Lav dig selv en lækker lasagne"+"\n"+"med de tilgængelige råvarer,"+"\n"+"bestående af grundlasagne"+"\n"+"og bechamelsauce!\n");
            //txt2.appendln("LASAGNEOPSKRIFT"+gL.getOkseMaengde()+"gr. oksekoed");
            //Samme for resten af ingridienser samt fremgangsmaade som string
        }else{
            txt2.appendln("Form og steg dig en stor bøf"+"\n"+"mens dine kartofler steges"+"\n"+"i ovnen"+"\n"+"- bør nydes med en kold øl!\n");
            //txt2.appendln("BOEF MED RAASTEGTE KARTOFLER"+bF.getOkseMaengde()+"gr. oksekoed");
            //Samme for resten af ingridienser samt fremgangsmaade som string
            a3bw.repaint();
            txt2.repaint();
  }
}
    public void rightAction(){
        if (label1.getText().equals("Lasagne")){
          txt3.appendln("Fedtenergiprocent er " + gL.sFEPL());
            //samme for protein og kulhydrat
        }else{
          txt3.appendln("Fedtenergiprocent er " + bF.sFEPB());
            //samme for protein og kulhydrat
        }
    }     
}


2:

/**
* Opskrift Superklasse, indeholder alle opskriftattributter
*
* @author (simon_frans)
* @version (1.0)
*/
public class Opskrifter
{
        protected int okseMaengde;
        protected int kartMaengde;
        protected int loegMaengde;
        protected int smoerMaengde;
        protected int ostMaengde;
        protected int guleMaengde;
        protected int lagsPlMaengde;
        protected int melMaengde;
        protected int maelkMaengde;
        protected int tomatMaengde;
        protected Kartofler kT;
        protected Loeg lG;
        protected Smoer sM;
        protected Ost oS;
        protected Guleroedder gR;
        protected OkseKoed oK;
        protected LasagnePlader lP;
        protected Mel mL;
        protected Tomat tM;
        protected Maelk mK;
        protected GrundLasagne gL;
        protected BechSauce bS;
        protected Boef bF;
        protected RaastKart rK;


}



3:


/**
* specifik grundlasagneopskrift med raavare værdier
*
* @author (simon_frans)
* @version (1.0)
*/
public class GrundLasagne extends Opskrifter
{
    public GrundLasagne(){
        okseMaengde=500;
        kartMaengde=0;
        loegMaengde=300;
        smoerMaengde=0;
        ostMaengde=200;
        guleMaengde=200;
        lagsPlMaengde=250;
        melMaengde=0;
        maelkMaengde=200;
        tomatMaengde=300;
    }
    public int getOkseMaengde(){
        return okseMaengde;
    }
    public int getKartMaengde(){
        return kartMaengde;
    }
    public int getLoegMaengde(){
        return loegMaengde;
    }
    public int getSmoerMaengde(){
        return smoerMaengde;
    }
    public int getOstMaengde(){
        return ostMaengde;
    }
    public int getGuleMaengde(){
        return guleMaengde;
    }
    public int getLagsPlMaengde(){
        return lagsPlMaengde;
    }
    public int getMelMaengde(){
        return melMaengde;
    }
    public int getMaelkMaengde(){
        return maelkMaengde;
    }
    public int getTomatMaengde(){
        return tomatMaengde;
    }
    public double samletFedt(){
        return (okseMaengde*oK.getFedt())+(kartMaengde*kT.getFedt())+(loegMaengde*lG.getFedt())+(smoerMaengde*sM.getFedt())+(ostMaengde*oS.getFedt())+(guleMaengde*gR.getFedt())+(lagsPlMaengde*lP.getFedt())+(melMaengde*mL.getFedt())+(maelkMaengde*mK.getFedt())+(tomatMaengde*tM.getFedt());
//SE HER!!! LAV OBJEKT OK = NEW, LAVES I DIRECTOR FOR AT KALDE METODE, HUSK DOUBLE OG RETURN
    }
    public double samletProtein(){
        return (okseMaengde*oK.getProtein())+(kartMaengde*kT.getProtein())+(loegMaengde*lG.getProtein())+(smoerMaengde*sM.getProtein())+(ostMaengde*oS.getProtein())+(guleMaengde*gR.getProtein())+(lagsPlMaengde*lP.getProtein())+(melMaengde*mL.getProtein())+(maelkMaengde*mK.getProtein())+(tomatMaengde*tM.getProtein());                                                   
    }
    public double samletKulhydrat(){
        return (okseMaengde*oK.getKulhydrat())+(kartMaengde*kT.getKulhydrat())+(loegMaengde*lG.getKulhydrat())+(smoerMaengde*sM.getKulhydrat())+(ostMaengde*oS.getKulhydrat())+(guleMaengde*gR.getKulhydrat())+(lagsPlMaengde*lP.getKulhydrat())+(melMaengde*mL.getKulhydrat())+(maelkMaengde*mK.getKulhydrat())+(tomatMaengde*tM.getKulhydrat());
    }
    public double samletKj(){
        return (okseMaengde*oK.getKj())+(kartMaengde*kT.getKj())+(loegMaengde*lG.getKj())+(smoerMaengde*sM.getKj())+(ostMaengde*oS.getKj())+(guleMaengde*gR.getKj())+(lagsPlMaengde*lP.getKj())+(melMaengde*mL.getKj())+(maelkMaengde*mK.getKj())+(tomatMaengde*tM.getKj());
    }
    public double fedtEnergiProcent(){
        return (samletFedt()*37*100)/samletKj();
    }
    public double proteinEnergiProcent(){
        return (samletProtein()*17*100)/samletKj();
    }
    public double kulhydratEnergiProcent(){
        return (samletKulhydrat()*17*100)/samletKj();
    }
    public double sFEPL(){
        return (fedtEnergiProcent()+bS.fedtEnergiProcent());
    }
}       
Avatar billede erikjacobsen Ekspert
21. marts 2002 - 21:12 #1
Du må hellere få spørgsmålet flyttet til Java. Jeg gider
ikke svare på det her.
Avatar billede sy22 Nybegynder
21. marts 2002 - 22:22 #2
beklager, det var lige røget forkert!
Avatar billede sy22 Nybegynder
22. marts 2002 - 01:40 #3
er flyttet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester