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

3072
3072 (13.330 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 (929.897 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/spm/361739
(se 08/06-2003 18:10:08).

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

arne_v
arne_v (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 point)
Du er velkommen.

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

3072
3072 (13.330 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 (929.897 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 (13.330 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 (13.330 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 (929.897 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 point)
Og så er der også porto beregningen !

:-)

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

3072
3072 (13.330 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 (13.330 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 (929.897 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 (929.897 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 (13.330 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 (929.897 point)
Du mangler parentser omkring hele if udtrykker - det er:

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

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

3072
3072 (13.330 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 (929.897 point)
"ikke oversætter" = "fejl ved oversættelse"

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

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

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

3072
3072 (13.330 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 (929.897 point)
Der er en ">" for meget efter 60.

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

3072
3072 (13.330 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 (13.330 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 (929.897 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 (13.330 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 (929.897 point)
Er c i argument-listen til constructoren ?

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

3072
3072 (13.330 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 (929.897 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 (13.330 point)
Nej det kan jeg godt se nu. :)

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

3072
3072 (13.330 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 (929.897 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 (13.330 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (929.897 point)
Jeg tror den er umulig at lave uden if else.

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

3072
3072 (13.330 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 (13.330 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 (929.897 point)
Ikke nogen som er relevant til problem-stillingen.

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

3072
3072 (13.330 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 (13.330 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 (929.897 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 (13.330 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 (929.897 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 (13.330 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 (13.330 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 (929.897 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 (13.330 point)
Hvorfor return -1.0; Og hvad med brevtypen

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

arne_v
arne_v (929.897 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 (13.330 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 (13.330 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 (13.330 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 (929.897 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 (13.330 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 (929.897 point)
Prøv lige og post hele koden.

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

3072
3072 (13.330 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 (929.897 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 (13.330 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 (929.897 point)
Prøv lige og post hele koden.

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

3072
3072 (13.330 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 (929.897 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 (13.330 point)
Ok tak det vil jeg gøre

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

3072
3072 (13.330 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 (929.897 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 (13.330 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 (13.330 point)
Kender du slet ikke noget til Blue J???

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

arne_v
arne_v (929.897 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 (13.330 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 (929.897 point)
Masser af if sætninger !

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

3072
3072 (13.330 point)
Efter portoen er beregnet?

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

arne_v
arne_v (929.897 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 (13.330 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 (13.330 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 (929.897 point)
Jeg gik i seng.

I http://www.eksperten.dk/spm/362755 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 (929.897 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

Applikation i Netbeans Platform

Oprettet den 31. august 2010 kl. 15.22
kkaen giver 100 point for svar | Giv et svar »

Is it possible in any way to programmatically get hold of...

Oprettet den 31. august 2010 kl. 13.22
fredand giver 30 point for svar | Giv et svar »

Static vs accessor/mutator

Oprettet den 27. august 2010 kl. 15.49
amews_aj giver 60 point for svar | Giv et svar »

Seneste guides

100% højde med CSS i alle browsere
XML
2 Ting du skal holde øje med





Tips & Tricks fra PC World

Teaser billede

Sådan udspionerer du Google

Søgegiganten Google ved uhyggeligt meget om dig. Med Google Alarm får du besked, hver gang der sendes oplysninger om dig til Googles servere.


Anmeldelser fra PC World

Teaser billede

Test: Smart GPS-ur til løb og cykelture

Garmins Forerunner 110 er en meget underholdende makker, uanset om du løber, kører mountainbike i skoven eller drøner rundt på rulleskøjter. Vi har testet det GPS-baserede motions-ur.


Seneste blogindlæg

Teaser billede

Kvittering og status

På Eksperten er der 914.000 spørgsmål. Af dem er 162.000 åbne spørgsmål hvor der ikke er et accepteret svar, selvom der ligger forslag til svar på 63.000 af dem. Mange af dem ligger mange år...


Nyheder fra PC World

Teaser billede

Samsung udfordrer iPad med toptunet Android-tablet

Syv tommer skærm, Googles mobile styresystem og en vægt på 380 gram. Samsung har afsløret detaljerne om Galaxy Tab, der er sydkoreanernes bud på en konkurrent til Apples iPad. Mød tablet-pc'en...


Nyheder fra Computerworld

Se ugens mest læste artikler på Computerworld.dk

Fik du det hele med? Se listen over ugens mest læste artikler på Computerworld.dk. Der er i alt blevet bragt 102 artikler.



Kurser
Samarbejdspartnere

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