Oprettet søn. d. 08. juni 2003 kl. 21:26:57

3072
3072 (15.940 point. Point ude: 60)

BlueJ problemer igen igen

Dette er også et spørgsmål til postsystemet med de tre forskellige brevkategorier.
Jeg læste at der var nogle der fik at vide at de skulle lave abstrakte klasser over brev hvordan gør man det helt præcist.

Skrevet søn. d. 08. juni 2003 kl. 21:30:57| #1

arne_v
arne_v (1.005.623 point)
Det er en måde at lave det på - der er mange andre.

Jeg postede noget kode tidligere iidag i http://www.eksperten.dk/ (...)
(se 08/06-2003 18:10:08).

Skrevet søn. d. 08. juni 2003 kl. 21:32:52| #2

arne_v
arne_v (1.005.623 point)
Koden er ikke "færdig", men den illusterer både abstrakt basis-klasse
og factory.

Hvis du ikke er for skrap til Java bør du måske starte med en
simplere løsning.

F.eks. bare en enkelt klasse og en masse if sætninger til at udregne
porto.

Skrevet søn. d. 08. juni 2003 kl. 21:35:02| #3

3072
3072 (15.940 point)
Jeg er ikke helt inde i det, men vil gerne vide lidt mere

Skrevet søn. d. 08. juni 2003 kl. 21:35:46| #4

arne_v
arne_v (1.005.623 point)
Prøv og kig på det kode eksempel jeg refererede til først.

Skrevet søn. d. 08. juni 2003 kl. 21:51:01| #5

3072
3072 (15.940 point)
Ok, så vil jeg lige spørge dig hvorfor bruges der private double til længde? Hvorfor skrives der public void? Og hvad betyder det når der står public double?

Skrevet søn. d. 08. juni 2003 kl. 21:54:37| #6

arne_v
arne_v (1.005.623 point)
Længde gemmes som double for at kunne håndtere decimaler f.eks. 29.7 cm.

Længde er private fordi den skal accesses gennem setLængde og
getLængde metoderne (og de er public).

void betyder at metoden ikke returnerer noget.

public betyder at metoden kan kaldes af al kode.

Skrevet søn. d. 08. juni 2003 kl. 21:59:37| #7

3072
3072 (15.940 point)
Ok, det vil altså sige at jeg kan godt skrive public int hvis der kun er tale om heltal og ikke andet. 

Hvad nu hvis man ikke ønsker at lave de abstrakte klasser men kun en klasse for brevene er det så også muligt?  Og hvilken løsning er bedst og nemmest at arbejde med?

Skrevet søn. d. 08. juni 2003 kl. 22:06:45| #8

arne_v
arne_v (1.005.623 point)
Ja - hvis det kun er heltal kan du bare erklære den int.

Du kan godt lave kun en klasse der indeholde hele logikken (hvis din opgave
formulering tillader det).

Løsningen med en abstrakt basis klasse og en factory er mere avanceret end
en stor klasse.

Men for at forstå den skal man have rimelig styr på Java.

Har du styr på abstrakte klassser og metoder ?

Hvis ikke tror jeg at du skal vælge en simplere løsning.

Skrevet søn. d. 08. juni 2003 kl. 22:11:05| #9

3072
3072 (15.940 point)
Jeg har ikke styr på abstrakte klasser og metoder, derfor vil jeg også gerne vide om det ikke var lettere at lave en klasse hvis man altså kan det.

Hvis man kan hvordan starter man så koden for det?

Skrevet søn. d. 08. juni 2003 kl. 22:15:31| #10

arne_v
arne_v (1.005.623 point)
Det kan du godt og det er nok mindre krævende med hensyn
til Java finesser.

Umiddelbart vil jeg tro at du skal starte med at lave en constructor
med et antal argumenter som beskriver brevet og noget kode der
gemmer dem.

Og så laver du en beregnPorto metode der udfra disse oplysninger
beregner den korrekte porto.

Det må være det allermest simple.

Skrevet søn. d. 08. juni 2003 kl. 22:23:37| #11

3072
3072 (15.940 point)
ok, så er problemet bare lige at jeg ikke er sikker på hvordan man laver en constructor og metoder til den.

Constructoren hører den ikke til efter public class {private String destination; osv}. Er du muligt at du kan give mig et hint på koden der skal efterfølge denne class?

Skrevet søn. d. 08. juni 2003 kl. 22:49:45| #12

arne_v
arne_v (1.005.623 point)
en constructor er en metode uden type med samme navn som klassen.

Eksempel:

public class Brev {
  public Brev(int l, int b, int t, int v, String d) {
  }
}

Skrevet søn. d. 08. juni 2003 kl. 23:02:55| #13

3072
3072 (15.940 point)
Ok tusind tak for al din hjælp, det var pænt af dig, det kan være jeg vender tilbage på et senere tidspunkt med flere spørgsmål.

Skrevet søn. d. 08. juni 2003 kl. 23:07:01| #14

arne_v
arne_v (1.005.623 point)
Du er velkommen.

Skrevet man. d. 09. juni 2003 kl. 10:43:12| #15

3072
3072 (15.940 point)
Så har lavet et en klasse som vi snakkede om i går, kan du sige om det jeg har gjort indtil videre er rigtigt?


public class Category
{
    // instance variables
    private int length, width, weight;
    private double thickness;   
    private String country;

    /**
    * Constructor for objects of class Category
    */
    public Category(String c, int l, int w, int  we, int t)
    {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
    }

Skrevet man. d. 09. juni 2003 kl. 10:51:14| #16

arne_v
arne_v (1.005.623 point)
Det ser meget fronuftigt ud (bortset fra at jeg tror du mangler at gemme
country).


Men det er nok porto beregningen der er det tricky.

Skrevet man. d. 09. juni 2003 kl. 11:02:54| #17

3072
3072 (15.940 point)
Nå, ja det skal jeg lige huske at gøre. Men skal de forskellige typer af breve ikke også nævnes?

Hvordan går jeg det her?

Skrevet man. d. 09. juni 2003 kl. 11:28:56| #18

3072
3072 (15.940 point)
Hvis det nu stadig skal være meget meget simpelt, kan jeg så ikke lave 2 klasser en hvor jeg beskriver brevene altså standard, large og maxi og en med porto.

Uden at det bliver med de abstrakte klasser du talte om i aftes er det også en mulighed?

Skrevet man. d. 09. juni 2003 kl. 12:41:31| #19

arne_v
arne_v (1.005.623 point)
Porto beregning er oplagt en metode og ikke en klasse.

Skrevet man. d. 09. juni 2003 kl. 12:42:59| #20

arne_v
arne_v (1.005.623 point)
Med hensyn til type kunne du jo f.eks. lave en metode:

public String getType()

der beregnede type "Standard", "Stor" eller "Maxi" udfra målene
som du har gemt.

Men der er altså mange måder at gøre det på.

Skrevet man. d. 09. juni 2003 kl. 12:49:40| #21

3072
3072 (15.940 point)
Ja, det er snart klar over :), men som sagt så skal det bare være så simpelt som muligt så jeg har en lille chance for at forstå hvad det er jeg har med at gøre:)

Hvis jeg bruger public string er det så ikke her jeg skal bruge new type = Standard?
Eller hvad det nu er jeg skal have frem.

Skrevet man. d. 09. juni 2003 kl. 12:52:57| #22

arne_v
arne_v (1.005.623 point)
Næ jeg forestillede mig noget så simpelt som:

public String getType() {
  if(...) {
      return "Standard";
  } else if(...) {
      return "Stor";
  } else {
      return "Maxi";
  }
}

Skrevet man. d. 09. juni 2003 kl. 12:58:13| #23

3072
3072 (15.940 point)
ok tak, det vil jeg prøve det ser noget mere overskueligt ud, men lad os nu om jeg kan få det til at virke:)

Skrevet man. d. 09. juni 2003 kl. 13:02:05| #24

arne_v
arne_v (1.005.623 point)
Og så er der også porto beregningen !

:-)

Skrevet man. d. 09. juni 2003 kl. 13:09:08| #25

3072
3072 (15.940 point)
Ser det her rigtig ud indtil nu?

public class Category
{
    // instance variables
    private int length, width, weight;
    private double thickness;   
   
   

    /**
    * Constructor for objects of class Category
    */
public Category(int l, int w, int  we, int t)
    {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
       
    }
   
    /**
    * Find out which type of letter we are dealing with according to weight,
      width, length and thicknes.
     
      public String getType(){ if(l <= 23) && (w <= 17) && (we <=50) &&
      (t <=0.5)
      {
      return "Standardletter";
      }
      else if {if(l <= 33) && (w <= 23) && (we <= 1000) && (t <= 2)
      {
      return " Largeletter";
      }
      else if(l <= 60> && (l + w + t <= 90) && (we <= 2000)
      {
      return "Maxiletter";
      }
      }


Eller er det helt hen i skove?

Skrevet man. d. 09. juni 2003 kl. 13:20:47| #26

3072
3072 (15.940 point)
Den der med portoberegningen ja, det skal noke blive sjovt:), men det er vel også en masse if else sætninger. Hvor land er inkludereret ikke?

Skrevet man. d. 09. juni 2003 kl. 13:30:07| #27

arne_v
arne_v (1.005.623 point)
Det oversætter ikke !

Jeg vil anbefale dig løbende at oversætte så du ikke får for mange fejl.

Skrevet man. d. 09. juni 2003 kl. 13:30:22| #28

arne_v
arne_v (1.005.623 point)
Den her versionb oversætter:

public class Category {
    // instance variables
    private int length, width, weight;
    private double thickness;

    /**
    * Constructor for objects of class Category
    */
    public Category(int l, int w, int we, int t) {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;

    }

    /**
    * Find out which type of letter we are dealing with according to weight,
    * width, length and thicknes.
    */

    public String getType() {
        if ((length <= 23) && (width <= 17) && (weight <= 50) && (thickness <= 0.5)) {
            return "Standardletter";
        } else if ((length <= 33) && (width <= 23) && (weight <= 1000) && (thickness <= 2)) {
            return " Largeletter";
        } else if ((length <= 60) && (length + width + thickness <= 90) && (weight <= 2000)) {
            return "Maxiletter";
        } else {
            return "Not a letter";
        }
    }
}

Skrevet man. d. 09. juni 2003 kl. 13:39:44| #29

3072
3072 (15.940 point)
Når jeg compiler får jeg følgende fejlmelding her: illegal start of expression public String getType(){ if(l <= 23) && (w <= 17) && (we <=50) &&

(Alt hvad jeg har skrevet indtil videre ser sådan ud.)

public class Category
{
    // instance variables
    private int length, width, weight;
    private double thickness;   
    private string country;
   

    /**
    * Constructor for objects of class Category
    */
public Category(int l, int w, int  we, int t)
    {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
        country = c;
    }
   
    //*Find out which type of letter we are dealing with according to weight,width, length and thicknes.*/
     
      public String getType(){ if(l <= 23) && (w <= 17) && (we <=50) &&
      (t <=0.5)
      {
      return "Standardletter";
      }
      else if {if(l <= 33) && (w <= 23) && (we <= 1000) && (t <= 2)
      {
      return " Largeletter";
      }
      else if(l <= 60> && (l + w + t <= 90) && (we <= 2000)
      {
      return "Maxiletter";
      }
      }
   
   
      //* Then we have to make the postage calculation according to weight
        * country.*/

   
       


}

Skrevet man. d. 09. juni 2003 kl. 13:42:30| #30

arne_v
arne_v (1.005.623 point)
Du mangler parentser omkring hele if udtrykker - det er:

if ( (...) && (...) && (...) ) {

Skrevet man. d. 09. juni 2003 kl. 13:52:07| #31

3072
3072 (15.940 point)
Har sat parenteser nu, men får så følgende fejlmelding: ";" expected
      public String getType()if((l <= 23) && (w <= 17) && (we <=50) && .............

Hvad mener du med ikke oversætter?

Skrevet man. d. 09. juni 2003 kl. 14:13:04| #32

arne_v
arne_v (1.005.623 point)
"ikke oversætter" = "fejl ved oversættelse"

Skrevet man. d. 09. juni 2003 kl. 14:13:59| #33

arne_v
arne_v (1.005.623 point)
Nu mangler der vist en "{" mellem "getTtype()" og "if".

Skrevet man. d. 09. juni 2003 kl. 14:20:54| #34

3072
3072 (15.940 point)
ok, Nu får jeg denne fejlmeddelse : Illegal start of expression

      else if((l <= 60>) && (l + w + t <= 90) && (we <= 2000))

Skrevet man. d. 09. juni 2003 kl. 14:25:10| #35

arne_v
arne_v (1.005.623 point)
Der er en ">" for meget efter 60.

Skrevet man. d. 09. juni 2003 kl. 14:31:29| #36

3072
3072 (15.940 point)
ok er fjernet tak. Nu får jeg denne fejlemelding:

Cannot resolve symbol symbol:     private string country;

Her er det jeg har skrevet:
public class Category
{
    // instance variables
    private int length, width, weight;
    private double thickness;   
    private string country;

Skrevet man. d. 09. juni 2003 kl. 14:31:51| #37

3072
3072 (15.940 point)
Er det fordi jeg ikke har country med i If else?

Skrevet man. d. 09. juni 2003 kl. 14:40:47| #38

arne_v
arne_v (1.005.623 point)
Nej du har stavet string med lille s (det er String med stort S).

Skrevet man. d. 09. juni 2003 kl. 14:46:17| #39

3072
3072 (15.940 point)
Nu kommer følgende fejlmelding;

cannot resolve symbol
symbol: variable c location: class Category country c;

// initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
        country = c;
    }

Skrevet man. d. 09. juni 2003 kl. 14:47:45| #40

arne_v
arne_v (1.005.623 point)
Er c i argument-listen til constructoren ?

Skrevet man. d. 09. juni 2003 kl. 14:53:02| #41

3072
3072 (15.940 point)
Ja jeg har skrevet den med forkortelsen c, det skulle jeg måske ikke

public class Category
{
    // instance variables
    private int length, width, weight;
    private double thickness;   
    private String country;
   

    /**
    * Constructor for objects of class Category
    */
public Category(int l, int w, int  we, int t)
    {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
        country = c;

Skrevet man. d. 09. juni 2003 kl. 15:00:31| #42

arne_v
arne_v (1.005.623 point)
Den er ikke i argument listen:

public Category(int l, int w, int  we, int t)

public Category(int l, int w, int  we, int t, String c)

Skrevet man. d. 09. juni 2003 kl. 15:02:20| #43

3072
3072 (15.940 point)
Nej det kan jeg godt se nu. :)

Skrevet man. d. 09. juni 2003 kl. 15:04:37| #44

3072
3072 (15.940 point)
Hvis jeg skriver den i argumentlisten går det så ikke galt når skriver if, else? Der skal land jo ikke blandes ind det skal jo først ind når jeg skal til at beregne portoen

Skrevet man. d. 09. juni 2003 kl. 15:06:21| #45

arne_v
arne_v (1.005.623 point)
Nej.

Det er ikke et krav at man skal bruge variable til noget.

Skrevet man. d. 09. juni 2003 kl. 15:12:18| #46

3072
3072 (15.940 point)
Ok, nu får jeg så følgende fejlmelding: cannot resolve symbol symbol: variable l location: class category       if((l <= 23) && (w <= 17) && (we <=50) &&

Alt hvad jeg skrevet til det er her:
public String getType(){
      if((l <= 23) && (w <= 17) && (we <=50) &&
      (t <=0.5))     
      {
      return "Standardletter";
      }
      else if ((l <= 33) && (w <= 23)&&(we <= 1000) && (t <= 2))
      {
      return " Largeletter";
      }
      else if ((l <= 60)&&(l + w + t <= 90)&&(we <= 2000))
      {
      return "Maxiletter";
      }
      else
      {
      return "Not a letter";



Kan alle de fejlmeldinger blive ved? :(

Skrevet man. d. 09. juni 2003 kl. 16:00:42| #47

3072
3072 (15.940 point)
Hvorfor vil den ikke compile når jeg har lavet forkortelser?

Skrevet man. d. 09. juni 2003 kl. 17:29:31| #48

arne_v
arne_v (1.005.623 point)
Du skal bruge length som er navnet på instans varieblen ikke l som er
navnet på argumentet i constructoren.

Skrevet man. d. 09. juni 2003 kl. 18:53:56| #49

3072
3072 (15.940 point)
Der forstår jeg ikke helt hvad forskellen er?

Skrevet man. d. 09. juni 2003 kl. 19:11:34| #50

arne_v
arne_v (1.005.623 point)
Argumentet til constructoren kan kun bruges i selve constructoren.

Instans variablen kan bruges i alle metoder.

Skrevet man. d. 09. juni 2003 kl. 19:16:33| #51

3072
3072 (15.940 point)
ok tak igen, du er en MEGET MEGET MEGET stor hjælp. Nu kommer det som jeg så frygter allermest ved opgaven nemlige portoberegning.

Kan jeg godt lave den oveni alt det andet jeg har skrevet?

Skrevet man. d. 09. juni 2003 kl. 19:19:03| #52

arne_v
arne_v (1.005.623 point)
Ja - du laver bare en ny metode calculatePorto nedenunder
getType metoden.

Skrevet man. d. 09. juni 2003 kl. 19:23:32| #53

3072
3072 (15.940 point)
ok kan jeg så også bruge if-else metoden her eller skal der noget mere avanceret til?

Skrevet man. d. 09. juni 2003 kl. 19:25:29| #54

arne_v
arne_v (1.005.623 point)
Jeg tror den er umulig at lave uden if else.

Skrevet man. d. 09. juni 2003 kl. 19:27:11| #55

3072
3072 (15.940 point)
ok, jeg prøver at se hvad jeg kan gøre ved den.

Skrevet man. d. 09. juni 2003 kl. 19:29:39| #56

3072
3072 (15.940 point)
Er der andre muligheder end if-else som stadigvæk er simple og forholdsvis nemme at forstå?

Skrevet man. d. 09. juni 2003 kl. 19:32:14| #57

arne_v
arne_v (1.005.623 point)
Ikke nogen som er relevant til problem-stillingen.

Skrevet man. d. 09. juni 2003 kl. 19:33:49| #58

3072
3072 (15.940 point)
Ok tak, jeg kigger på det og håber jeg kan få det til at lykkes:)

Skrevet man. d. 09. juni 2003 kl. 19:43:59| #59

3072
3072 (15.940 point)
Skulle country ikke også være nævnt et eller andet sted i opgaven ligesom brevetyperne er?

Skrevet man. d. 09. juni 2003 kl. 19:46:54| #60

arne_v
arne_v (1.005.623 point)
Ikke forstået.

Du gemmer conutry i constructor og kan bruge den i porto beregning.

Skrevet man. d. 09. juni 2003 kl. 19:52:56| #61

3072
3072 (15.940 point)
Det kan jeg simpelthen ikke se logikken i det her. Jeg skal have country, vægt og brevtypen ind i if-else og return skal være postage.

Jeg skulle vist have givet op for længe for længe siden:(

Skrevet man. d. 09. juni 2003 kl. 19:56:24| #62

arne_v
arne_v (1.005.623 point)
vægt og country er instans variable
brev type kan du beregne med getType

altså har du alt det du skal bruge !

Skrevet man. d. 09. juni 2003 kl. 19:59:35| #63

3072
3072 (15.940 point)
ok jeg prøver og ser hvad jeg kan få ud af det. Atter engang tak.

Skrevet man. d. 09. juni 2003 kl. 20:12:31| #64

3072
3072 (15.940 point)
Jeg har fået sat det her ind til videre er det den rigtige fremgangsmåde?


        public String calculatePostage()
        {
        if ((weight <= 50) && (country.equals("Denmark"))
        {
        return "weight" + Weight + "postage" + postage
        }

Skrevet man. d. 09. juni 2003 kl. 20:14:55| #65

arne_v
arne_v (1.005.623 point)
Jeg ville nok lave det som:

public double calculatePostage() {
    if ((weight <= 50) && country.equals("Denmark")) {
        return 4.25;
    }
    return -1.0;
}

Skrevet man. d. 09. juni 2003 kl. 20:17:53| #66

3072
3072 (15.940 point)
Hvorfor return -1.0; Og hvad med brevtypen

Skrevet man. d. 09. juni 2003 kl. 20:21:35| #67

arne_v
arne_v (1.005.623 point)
Java compileren vil brokke sig hvis der ikke altid er en retur værdi.

Jeg troede at du skulel sætte brev type ind, men lad gå:

public double calculatePostage() {
    if (getType().equals("Standardletter") && (weight <= 50) && country.equals("Denmark")) {
        return 4.25;
    }
    return -1.0;
}

du har stadig lidt der mangler inden de 2 andre brev typer er supporteret !

Skrevet man. d. 09. juni 2003 kl. 20:25:04| #68

3072
3072 (15.940 point)
Det skulle jeg også, men jeg kunne ikke se hvor det skulle ind henne, det ser så nemt ud for dem der virkelig kan det her.

Ok, vil det så sige at return altid er -1.0?

Skrevet man. d. 09. juni 2003 kl. 20:33:07| #69

3072
3072 (15.940 point)
kan jeg godt køre if hele vejen ned for først til sidst at skrive else { return no letter}?

Skrevet man. d. 09. juni 2003 kl. 20:50:29| #70

3072
3072 (15.940 point)
Hvorfor får jeg denne fejlmelding return outside method 5.50 ?

Her er hvad jeg har skrevet:
{
        if ((getType().equals("Largeletter")) && (weight <= 50) &&
        country.equals("Denmark"))
      {
      return 5.50;
      }
      return -1.0;
      }

Skrevet man. d. 09. juni 2003 kl. 20:52:38| #71

arne_v
arne_v (1.005.623 point)
Det lyder som om det står uden for en metode.

Skrevet man. d. 09. juni 2003 kl. 20:58:04| #72

3072
3072 (15.940 point)
Ja, så langt er jeg også med:) Men det står nøjagtig ligesom den med 4.25 og der fik jeg ingen fejl ved compilingen,

Skrevet man. d. 09. juni 2003 kl. 21:00:55| #73

arne_v
arne_v (1.005.623 point)
Prøv lige og post hele koden.

Skrevet man. d. 09. juni 2003 kl. 21:06:04| #74

3072
3072 (15.940 point)
ok her er den:

public double calculatePostage()
        {
        if ((getType().equals("Standardletter")) && (weight <= 50)
            && country.equals("Denmark"))
            {       
        return 4.25;
        }
        return -1.0;
        }
       
        if ((getType().equals("Largeletter")) && (weight <= 50) &&
        country.equals("Denmark"))
      {
      return 5.50;
      }
      return -1.0;
      }

Skrevet man. d. 09. juni 2003 kl. 21:08:29| #75

arne_v
arne_v (1.005.623 point)
Der er jo også en parentes for meget.

Prøv med:

public double calculatePostage()
        {
        if ((getType().equals("Standardletter")) && (weight <= 50)
            && country.equals("Denmark"))
            {     
        return 4.25;
        }
     
        if ((getType().equals("Largeletter")) && (weight <= 50) &&
        country.equals("Denmark"))
      {
      return 5.50;
      }
      return -1.0;
      }

Skrevet man. d. 09. juni 2003 kl. 21:26:12| #76

3072
3072 (15.940 point)
Jeg forstår det ikke helt længere er det ikke tilladt at copy paste for det er hvad jeg har gjort med det du lige har skrevet fordi der ikke var nogen fejlmelding, men når jeg paster og retter i det før jeg fejlmeldingen: Illegal start of type if ((getType()equals.("Largeletter")) && (weight <= 100)

Hvad er det jeg gør forkert kan du sige mig det?

Skrevet man. d. 09. juni 2003 kl. 21:28:58| #77

arne_v
arne_v (1.005.623 point)
Prøv lige og post hele koden.

Skrevet man. d. 09. juni 2003 kl. 21:30:39| #78

3072
3072 (15.940 point)
Her kommer den:

  public double calculatePostage()
        {
        if ((getType().equals("Standardletter")) && (weight <= 50)
            && country.equals("Denmark"))
            {     
        return 4.25;
        }
     
        if ((getType().equals("Largeletter")) && (weight <= 50) &&
        country.equals("Denmark"))
      {
      return 5.50;
      }
      return -1.0;
      }

   
     
        if ((getType().equals("Largeletter")) && (weight <= 100)
            && country.equals("Denmark"))
            {     
        return 6.50;
        }
     
        if ((getType().equals("Largeletter")) && (weight <= 250) &&
        country.equals("Denmark"))
      {
      return 12.00;
      }
      return -1.0;
      }

Skrevet man. d. 09. juni 2003 kl. 21:33:20| #79

arne_v
arne_v (1.005.623 point)
Der er igen:

    return -1.0;
      }

for meget !

Fjern den første.

Skrevet man. d. 09. juni 2003 kl. 21:35:52| #80

3072
3072 (15.940 point)
Ok tak det vil jeg gøre

Skrevet man. d. 09. juni 2003 kl. 22:29:41| #81

3072
3072 (15.940 point)
STORT PROBLEM IHVERTFALD FOR MIG:)

Når jeg taster ind i selve BLUEJ for create object får jeg følgende fejlmelding:

Error possible loss of precision
found Double
Required int
int_bluej_param3 = 0.5;

Det er når jeg taster thickness ind. Hvordan retter jeg det

Skrevet man. d. 09. juni 2003 kl. 22:34:28| #82

arne_v
arne_v (1.005.623 point)
Det lyder som du forsøger at putte en double ind i en int.

Det kan du ikke.

Men iøvrigt kender jeg ikke noget til BlueJ.

Skrevet man. d. 09. juni 2003 kl. 22:36:37| #83

3072
3072 (15.940 point)
Jeg har selv rettet fejlen det var i instance variables jeg havde lavet fejlen puha

Skrevet man. d. 09. juni 2003 kl. 22:38:07| #84

3072
3072 (15.940 point)
Kender du slet ikke noget til Blue J???

Skrevet man. d. 09. juni 2003 kl. 22:39:51| #85

arne_v
arne_v (1.005.623 point)
Ikke spor.

Jeg bruger JBuilder, Eclipse m.v. til min Java programmering.

Skrevet man. d. 09. juni 2003 kl. 22:41:15| #86

3072
3072 (15.940 point)
Når jeg nu kun skal finde frem til porto prisen ved hjælp af destination og vægt hvordan klarer jeg så lige det.

Skrevet man. d. 09. juni 2003 kl. 22:46:32| #87

arne_v
arne_v (1.005.623 point)
Masser af if sætninger !

Skrevet man. d. 09. juni 2003 kl. 22:47:54| #88

3072
3072 (15.940 point)
Efter portoen er beregnet?

Skrevet man. d. 09. juni 2003 kl. 22:50:43| #89

arne_v
arne_v (1.005.623 point)
Øh - du bruger if sætningerne til at beregne porto. Du er allerede
startet med din calculatePostage metode. Den gør du færdig.

Og så er din klasse klar til test.

Skrevet man. d. 09. juni 2003 kl. 22:54:17| #90

3072
3072 (15.940 point)
Her er min klasse:

import java.util.*;
/**
* Letter information what kind of letter are we dealing with defined by length,
* width, thickness and weight.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Category
{
    // instance variables
    private int length, width, weight;
    private double thickness;   
    private String country;
   

    /**
    * Constructor for objects of class Category
    */
public Category(int l, int w, int  we, double t, String c)
    {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
        country = c;
    }
   
    //*Find out which type of letter we are dealing with according to weight,width, length and thicknes.*/
     
      public String getType(){
      if((length <= 23) && (width <= 17) && (weight <=50) &&
      (thickness <=0.5))     
      {
      return "Standardletter";
      }
      else if ((length <= 33) && (width <= 23)&&(weight <= 1000) && (thickness <= 2))
      {
      return " Largeletter";
      }
      else if ((length <= 60)&&(length + width + thickness <= 90)&&(weight <= 2000))
      {
      return "Maxiletter";
      }
      else
      {
      return "Not a letter";
      }
      }
   
   
   
      //* Then we have to make the postage calculation according to weight and country.*/
       
       
      public double calculatePostage()
        {
if ((getType().equals("Standardletter")) && (weight <= 50)
            && country.equals("Denmark"))
            {     
        return 4.25;
        }
       
       
if ((getType().equals("Standardletter")) && (weight <= 50)
            && country.equals("Europ, The Faroes Island and Greenland"))
            {     
        return 5.50;
        }
       
       
if ((getType().equals("Standardletter")) && (weight <= 50)
            && country.equals("Other foreign countries"))
            {     
        return 6.50;
        } 
       
       
if ((getType().equals("Largeletter")) && (weight <= 50) &&
        country.equals("Denmark"))
      {
      return 5.50;
      }
     
if ((getType().equals("Largeletter")) && (weight <= 100)
            && country.equals("Denmark"))
            {     
        return 6.50;
        }
     
if ((getType().equals("Largeletter")) && (weight <= 250) &&
        country.equals("Denmark"))
      {
      return 12.00;
      }
   
   
if ((getType().equals("Largeletter")) && (weight <= 500) &&
        country.equals("Denmark"))
      {
      return 20.00;
      }
     
if ((getType().equals("Largeletter")) && (weight <= 1000)
            && country.equals("Denmark"))
            {     
        return 28.00;
        }
     
if ((getType().equals("Largeletter")) && (weight <=50) &&
        country.equals("Europe, The Faroes Island and Greenland"))
      {
      return 8.50;
      }
if ((getType().equals("Largeletter")) && (weight <= 100)
            && country.equals("Europe, The Faroes Island and Greenland"))
            {     
        return 12.00;
        }
     
if ((getType().equals("Largeletter")) && (weight <= 250) &&
        country.equals("Europe, The Faroes Island and Greenland"))
      {
      return 19.00;
      }
   
if ((getType().equals("Largeletter")) && (weight <= 500) &&
        country.equals("Europe, The Faroes Island and Greenland"))
      {
      return 33.00;
      }

if ((getType().equals("Largeletter")) && (weight <= 1000)
            && country.equals("Europe, The Faroes Island and Greenland"))
            {     
        return 57.00;
        }
     
if ((getType().equals("Largeletter")) && (weight <=50) &&
        country.equals("Other foreign countries"))
      {
      return 11.50;
      }
   
if ((getType().equals("Largeletter")) && (weight <= 100)
            && country.equals("Other foreign countries"))
            {     
        return 18.00;
        }
     
if ((getType().equals("Largeletter")) && (weight <= 250) &&
        country.equals("Other foreign countries"))
      {
      return 33.00;
      }
   
if ((getType().equals("Largeletter")) && (weight <= 500) &&
        country.equals("Other foreign countries"))
      {
      return 56.00;
      }

if ((getType().equals("Largeletter")) && (weight <= 1000)
            && country.equals("Other foreign countries"))
            {     
        return 95.00;
        }
     
if ((getType().equals("Maxiletter")) && (weight <= 50) &&
        country.equals("Denmark"))
      {
      return 7.00;
      }
     
if ((getType().equals("Maxiletter")) && (weight <= 100)
            && country.equals("Denmark"))
            {     
        return 9.00;
        }
     
if ((getType().equals("Maxiletter")) && (weight <= 250) &&
        country.equals("Denmark"))
      {
      return 15.00;
      }
       
if ((getType().equals("Maxiletter")) && (weight <= 500) &&
        country.equals("Denmark"))
      {
      return 24.00;
      }
     
if ((getType().equals("Maxiletter")) && (weight <= 1000)
            && country.equals("Denmark"))
            {     
        return 32.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 2000)
            && country.equals("Denmark"))
            {     
        return 40.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 50) &&
        country.equals("Europe, The Faroes Island and Greenland"))
        {     
        return 14.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 100)
            && country.equals("Europe, The Faroes Island and Greenland"))
            {     
        return 19.00;
        }
     
if ((getType().equals("Maxiletter")) && (weight <= 250) &&
        country.equals("Europe, The Faroes Island and Greenland"))
      {
      return 26.00;
      }
       
if ((getType().equals("Maxiletter")) && (weight <= 500) &&
        country.equals("Europe, The Faroes Island and Greenland"))
      {
      return 41.00;
      }
     
if ((getType().equals("Maxiletter")) && (weight <= 1000)
            && country.equals("Europe, The Faroes Island and Greenland"))
            {     
        return 65.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 2000)
            && country.equals("Europe, The Faroes Island and Greenland"))
            {     
            return 100.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 50) &&
        country.equals("Other foreign countries"))
        {     
        return 19.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 100)
            && country.equals("Other foreign countries"))
            {     
        return 27.00;
        }
     
if ((getType().equals("Maxiletter")) && (weight <= 250) &&
        country.equals("Other foreign countries"))
      {
      return 41.00;
      }
       
if ((getType().equals("Maxiletter")) && (weight <= 500) &&
        country.equals("Other foreign countries"))
      {
      return 61.00;
      }
     
if ((getType().equals("Maxiletter")) && (weight <= 1000)
            && country.equals("Other foreign countries"))
            {     
        return 105.00;
        }
   
if ((getType().equals("Maxiletter")) && (weight <= 2000)
            && country.equals("Other foreign countries"))
            {     
            return 175.00;
            }
   
            else
            {
              return -1.0;
              }
}
   















}
Den er compilet og det hele men når vil have den til at hente double calculatePostage kommer den op og siger double method result = -1.0
Kan du sige mig hvad jeg har gjort galt her?

Skrevet man. d. 09. juni 2003 kl. 23:40:46| #91

3072
3072 (15.940 point)
Kan du se hvad jeg har gjort galt udover at else return er -1.0, jeg ved bare ikke hvordan jeg skal rette den.

Og så har jeg lige et sidste spørgsmål:) Hvis jeg skal udregne portoen efter vægt og destination hvordan skal jeg så lave if-else koderne og hvor skal de ind henne?

Jeg håber du vil svare på disse ting så skal du nok få fred for mig:)

Skrevet tir. d. 10. juni 2003 kl. 07:00:58| #92

arne_v
arne_v (1.005.623 point)
Jeg gik i seng.

I http://www.eksperten.dk/ (...) lyder det som om at de allerede har fundet
løsningen.

Et " " for meget.

Skrevet tir. d. 10. juni 2003 kl. 07:03:53| #93

arne_v
arne_v (1.005.623 point)
Det virker nemlig også hos mig:

/**
* Letter information what kind of letter are we dealing with defined by length,
* width, thickness and weight.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Category {
    // instance variables
    private int length, width, weight;
    private double thickness;
    private String country;

    /**
    * Constructor for objects of class Category
    */
    public Category(int l, int w, int we, double t, String c) {
        // initialise instance variables
        length = l;
        width = w;
        weight = we;
        thickness = t;
        country = c;
    }

    //*Find out which type of letter we are dealing with according to weight,width, length and thicknes.*/

    public String getType() {
        if ((length <= 23)
            && (width <= 17)
            && (weight <= 50)
            && (thickness <= 0.5)) {
            return "Standardletter";
        } else if (
            (length <= 33)
                && (width <= 23)
                && (weight <= 1000)
                && (thickness <= 2)) {
            return "Largeletter";
        } else if (
            (length <= 60)
                && (length + width + thickness <= 90)
                && (weight <= 2000)) {
            return "Maxiletter";
        } else {
            return "Not a letter";
        }
    }

    //* Then we have to make the postage calculation according to weight and country.*/

    public double calculatePostage() {
        if ((getType().equals("Standardletter"))
            && (weight <= 50)
            && country.equals("Denmark")) {
            return 4.25;
        }

        if ((getType().equals("Standardletter"))
            && (weight <= 50)
            && country.equals("Europ, The Faroes Island and Greenland")) {
            return 5.50;
        }

        if ((getType().equals("Standardletter"))
            && (weight <= 50)
            && country.equals("Other foreign countries")) {
            return 6.50;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 50)
            && country.equals("Denmark")) {
            return 5.50;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 100)
            && country.equals("Denmark")) {
            return 6.50;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 250)
            && country.equals("Denmark")) {
            return 12.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 500)
            && country.equals("Denmark")) {
            return 20.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 1000)
            && country.equals("Denmark")) {
            return 28.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 50)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 8.50;
        }
        if ((getType().equals("Largeletter"))
            && (weight <= 100)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 12.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 250)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 19.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 500)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 33.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 1000)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 57.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 50)
            && country.equals("Other foreign countries")) {
            return 11.50;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 100)
            && country.equals("Other foreign countries")) {
            return 18.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 250)
            && country.equals("Other foreign countries")) {
            return 33.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 500)
            && country.equals("Other foreign countries")) {
            return 56.00;
        }

        if ((getType().equals("Largeletter"))
            && (weight <= 1000)
            && country.equals("Other foreign countries")) {
            return 95.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 50)
            && country.equals("Denmark")) {
            return 7.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 100)
            && country.equals("Denmark")) {
            return 9.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 250)
            && country.equals("Denmark")) {
            return 15.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 500)
            && country.equals("Denmark")) {
            return 24.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 1000)
            && country.equals("Denmark")) {
            return 32.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 2000)
            && country.equals("Denmark")) {
            return 40.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 50)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 14.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 100)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 19.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 250)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 26.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 500)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 41.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 1000)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 65.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 2000)
            && country.equals("Europe, The Faroes Island and Greenland")) {
            return 100.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 50)
            && country.equals("Other foreign countries")) {
            return 19.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 100)
            && country.equals("Other foreign countries")) {
            return 27.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 250)
            && country.equals("Other foreign countries")) {
            return 41.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 500)
            && country.equals("Other foreign countries")) {
            return 61.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 1000)
            && country.equals("Other foreign countries")) {
            return 105.00;
        }

        if ((getType().equals("Maxiletter"))
            && (weight <= 2000)
            && country.equals("Other foreign countries")) {
            return 175.00;
        } else {
            return -1.0;
        }
    }
    public static void main(String[] args) {
        Category brev = new Category(25,10,200,1,"Denmark");
        System.out.println(brev.calculatePostage());
    }
}

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Hjælp til Java Spil logik

Oprettet den 11. februar 2012 kl. 13.43
stroyer_dk giver 200 point for svar | Giv et svar »

Gentegne JPanel ved tryk på JButton

Oprettet den 8. februar 2012 kl. 22.15
odsgaard giver 30 point for svar | Giv et svar »

Eksempel på kommunikation med webserver

Oprettet den 7. februar 2012 kl. 09.23
larsande giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger