Avatar billede willi Nybegynder
25. august 2003 - 17:19 Der er 9 kommentarer og
1 løsning

Parameter eller metode problemer

Jeg har følgende klasse fra Horstmann:

public class ExerciseP3_3Employee

{           
                                       
        public ExerciseP3_3Employee(String aNavn, double aLøn, double aLønF)
        { navn = aNavn;
          løn = aLøn;
          lønF = aLønF;
        }
               
        public void addNavn(String navn)
        {  navn = navn;
        }

        public void addLøn(double iLøn)
        {     løn = løn;
        }
       
        public void addLønFor(double iLønF)
        {    lønF = løn*10/100;
        }
               
        public double getLøn()
        { return  løn;
        }
   
        public double getLønFor()
        { return  lønF;
        }
       
        public String getNavn()
        { return  navn;
        }
               
        private double lønF;
        private double løn;
        private String navn;



Denne skal returnere navn, løn og lønnen efter lønforhøjelse.
Det skulle nedenstående klasse gøre.


import java.io.*;
public class ExerciseP3_3EmployeeTest

{        public static void main(String [] arg)
       
        {    try
            {    ExerciseP3_2Employee employee = new ExerciseP3_2Employee();
               
               
                InputStreamReader readers = new InputStreamReader(System.in);
                BufferedReader console = new BufferedReader(readers);
                       
                System.out.println("Skriv dit navn ");
                String navn = console.readLine();
                employee.addNavn(navn);
                System.out.println("Navn = " + employee.getNavn());
               
                System.out.println("Skriv din løn ");
                String løn = console.readLine();           
                int iLøn = Integer.parseInt(løn);
                employee.addLøn(iLøn);
                System.out.print("Løn  " +  employee.getLøn());
               
                System.out.println("Skriv din løn forhøjelse ");
                String lønF = console.readLine();           
                double iLønF = Double.parseDouble(lønF);
                employee.addLønFor(iLønF);
                System.out.print("Løn  " +  employee.getLønFor());
            }
                catch(IOException e)
                {    System.out.println(e);
                    System.exit(1);
                }
        }
}

Men gør ikke.
Horstmann skriver at der skal anvendes en default konstructor. Men det hjælper ikke. Mener jeg.
Nogen som kan løse det?

Fejl beskeden er:

ExerciseP3_3EmployeeTest.java:27: cannot resolve symbol
symbol  : method addLønFor (double)
location: class ExerciseP3_2Employee
                employee.addLønFor(iLønF);
                                        ^
ExerciseP3_3EmployeeTest.java:28: cannot resolve symbol
symbol  : method getLønFor ()
location: class ExerciseP3_2Employee
                System.out.print("Løn  " +  employee.getLønFor());
                                                                    ^
2 errors
Avatar billede simonvalter Praktikant
25. august 2003 - 17:39 #1
ExerciseP3_2Employee employee = new ExerciseP3_2Employee();
skal vel være
ExerciseP3_3Employee employee = new ExerciseP3_3Employee();

hvis du har lavet en constructor med
public ExerciseP3_3Employee(String aNavn, double aLøn, double aLønF)

så skal den også oprettes sådan i
ExerciseP3_3EmployeeTest klassen

du skal nok lave den om til

public ExerciseP3_3Employee()
        { navn = "";
          løn = 0;
          lønF = 0;
        }
Avatar billede arne_v Ekspert
25. august 2003 - 17:40 #2
Det er også korrekt.

ExerciseP3_2Employee employee = new ExerciseP3_2Employee();

compiler ikke når:

public ExerciseP3_3Employee(String aNavn, double aLøn, double aLønF)
        { navn = aNavn;
          løn = aLøn;
          lønF = aLønF;
        }
         
er enste constructor !
Avatar billede arne_v Ekspert
25. august 2003 - 17:42 #3
Enten skal du have 3 argumenter på i constructor kaldet eller du skal
have lavet en constructor uden argumenter.
Avatar billede Slettet bruger
25. august 2003 - 17:43 #4
Kan man godt bruge æøå i metodenavne i java iøvrigt? Det må være en dårlig idé under alle omstændigheder.
Avatar billede arne_v Ekspert
25. august 2003 - 17:44 #5
Derudover er følgende linier:

        public void addNavn(String navn)
        {  navn = navn;
        }

        public void addLøn(double iLøn)
        {    løn = løn;
        }

forkerte og skal være:

        public void addNavn(String navn)
        {  this.navn = navn;
        }

        public void addLøn(double iLøn)
        {    this.løn = løn;
        }
Avatar billede arne_v Ekspert
25. august 2003 - 17:45 #6
Ja man kan godt bruge ÆØÅ i navne i java.

Og jeg er helt enig: gyselig ting.
Avatar billede simonvalter Praktikant
25. august 2003 - 17:45 #7
det er en dårlig ide med danske tegn i medtode navne .. folk der bruger et tegnsæt uden æøå kan ikke læse dem.
Avatar billede simonvalter Praktikant
25. august 2003 - 17:48 #8
lille fejl den sidste skal være >

public void addLøn(double løn )
  {   
  this.løn = løn;
  }

jeg ville iøvrigt bruge getLøn/setLøn
Avatar billede willi Nybegynder
25. august 2003 - 20:37 #9
Tak for hjælpen. Men jeg forstår ikke helt det med det virkede da jeg fjernede parametrene. Heller ikke helt det med this.
Men det kommer jeg vel til engang ;?
Avatar billede arne_v Ekspert
25. august 2003 - 21:12 #10
public void addNavn(String navn)
        {
            navn = navn;
        }

gør absolut ingenting.

        public void addNavn(String navn)
        {
            this.navn = navn;
        }

assigner argumentet til instans member variablen.
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
Kurser inden for grundlæggende programmering

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