Avatar billede chainweb Nybegynder
14. januar 2007 - 13:06 Der er 7 kommentarer og
1 løsning

Hjælp! fejl i programmering.

Nedenstående programmering viser følgende fejl på linje 35 og 111.. Nogen der kan hjælpe?

public class Oelautomat {
  /*
  * Her kan I have referencer til de andre objekter jeres oelautomat
  * skal benytte, samt andre almindelige variable (int, boolean, String etc)
  */ 
  //private <Klasse-navn> <navn paa objekt> = new <klasse-navn>(<evt. initialisering>);
  //private <Variabel-type> <navn paa variabel> = <vaerdi>;
 
 
  /*
  * Dette er konstruktoeren for jeres oelautomatklasse. Altså det sted
  * instansen af denne klasse bliver oprettet. Her kan variable initialiseres
  * og objekter oprettes.
  */
 
 
  public Oelautomat() {
   
  }
  public void Start () {
    SimpleInput input = new SimpleInput();
    boolean koerer = true;
    /*
    * De variable der placeres her ("udenfor" while-loekken) og initialieres/aendres
    * inde i while-loekken vil ikke forsvinde naar while-loekken starter forfra.
    * Variablen vil ogsaa kunne bruges naar while-loekken er feardig.
    */
    String oensketoel;
    int penge = 0;
    System.out.println("Velkommen til oelautomaten");
    /*
    * Dette er den foerste og yderste while-loekke. Saa laenge "koerer" er true
    * vil programmet koere og tage imod input fra brugeren.
    */
  public Oelautomat () {
    opretOel("Carlsberg",6);
    opretOel("Tuborg",6);
    opretOel("Odin",5);
    opretOel("Pokal",4);
    opretOel("Royal",5);
  }
 
  public void opretOel (String navn, int pris) {
    Oel nyOel = new Oel(navn,pris,ledigtOelnr);
    oeller[ledigtOelnr] = nyOel;
    ledigtOelnr++;
    System.out.println("Prisen for en "+navn+" er: "+pris);
    return;
  }
 
    while(koerer) {
      oensketoel = "ingen oel valgt";
      penge = 0;
      boolean handelIgang = true;
      while(handelIgang && koerer) {
        System.out.println("Indtast oeloenske, se valgt oel, se tilgaengelige oel, indkast penge eller stop automat:");
        System.out.println("\"valg\" <oelnavn>");
        System.out.println("\"seValg\"");
        System.out.println("\"indkast\" <antal penge>");
        System.out.println("\"stop\"\n");
        /*
        * Den foelgende linje er det sted programmet tager imod input fra brugeren.
        * Her saettes "ord" lig med den tekststreng brugeren indskriver.
        * Brug denne (... = input.nextWord()) hver gang der skal hentes en tekststreng
        * fra brugeren. Hvis man vil have et tal eller en boolean ind skal man bruge
        * hhv. input.nextInt() eller input.nextBoolean()
        *
        * HUSK: naar en handel er overstaaet skal "handelIgang" saettes til "false".
        *
        */
        String ord = input.nextWord();
       
        /*         
        * <String-variabel med tekststreng>.equalsIgnoreCase(<String-variabel med tekststreng>)
        * undersoeger om de to tekststrenge er lig hinanden, uden at tage forskel paa
        * store og smaa bogstaver i betragtning.
        */
        if(ord.equalsIgnoreCase("indkast")){
          int indkastedePenge = input.nextInt();
          if(indkastedePenge>0) {
            penge = penge + indkastedePenge;
            /*
            * Her kan det undersoeges om der er indkastet tilstraekkeligt med penge
            * og ud fra dette gaa videre. Hvis man har et objekt, der holder oeje med pengene
            * i automaten kan interaktion foregaa her.
            */
            System.out.println("\nAntallet af indkastede penge er: "+penge+"\n");
          } else {
            System.out.println("\nBeloebet skal vaere stoere end nul.\n");
          }
        } else if(ord.equalsIgnoreCase("valg")) {
          oensketoel = input.nextWord();
          System.out.println("Penge kan indkastes eller oel vaelges\n"+"Tilgaengelige oel er: ");
          /*
          * Bemaerk: Man kan aendres valget af en oel under selve handlen.
          * Dette skal aendes hvis det ikke passer med jeres design.
          *
          * Her kan man undersoege om oellen findes, og ud fra dette gaa videre
          */
        } else if(ord.equalsIgnoreCase("sevalg")){
          System.out.println("\nDen valgte oel er: "+oensketoel+"\n");
        } else if(ord.equalsIgnoreCase("stop")) {
          System.out.println("\nAutomaten stoppes!\n");
          koerer = false;
        } else {
          System.out.println("\nKommando ikke forstaaet.");
          System.out.println("Proev igen.\n");
        }
      }
    }}
Avatar billede pidgeot Nybegynder
14. januar 2007 - 13:13 #1
Det er naturligvis lidt et gæt når du udelader selve fejlbeskeden, men så vidt jeg lige kan se er der to ting galt:

1) Metoden public void Start() afsluttes aldrig med en }
2) Du har to constructorer til Oelautomat med samme parametre - den tomme af dem skal vist fjernes.
Avatar billede kalp Novice
14. januar 2007 - 13:17 #2
jeg er måske blind.. men hvor er variablen ledigtOelnr henne?

Oel nyOel = new Oel(navn,pris,ledigtOelnr);
Avatar billede chainweb Nybegynder
14. januar 2007 - 13:22 #3
Pidgeot -> Jeg har indsat en til } forneden, men den melder stadig samme fejl?
Jeg har prøvet at fjerne den ene constructor, men den melder stadig samme fejl?
Kalp-> jeg har fjernet ledigtoelnr.


public class Oelautomat {
  /*
  * Her kan I have referencer til de andre objekter jeres oelautomat
  * skal benytte, samt andre almindelige variable (int, boolean, String etc)
  */ 
  //private <Klasse-navn> <navn paa objekt> = new <klasse-navn>(<evt. initialisering>);
  //private <Variabel-type> <navn paa variabel> = <vaerdi>;
 
 
  /*
  * Dette er konstruktoeren for jeres oelautomatklasse. Altså det sted
  * instansen af denne klasse bliver oprettet. Her kan variable initialiseres
  * og objekter oprettes.
  */
 

  public void Start () {
    SimpleInput input = new SimpleInput();
    boolean koerer = true;
    /*
    * De variable der placeres her ("udenfor" while-loekken) og initialieres/aendres
    * inde i while-loekken vil ikke forsvinde naar while-loekken starter forfra.
    * Variablen vil ogsaa kunne bruges naar while-loekken er feardig.
    */
    String oensketoel;
    int penge = 0;
    System.out.println("Velkommen til oelautomaten");
    /*
    * Dette er den foerste og yderste while-loekke. Saa laenge "koerer" er true
    * vil programmet koere og tage imod input fra brugeren.
    */
    public void Oelautomat () {
    opretOel("Carlsberg",6);
    opretOel("Tuborg",6);
    opretOel("Odin",5);
    opretOel("Pokal",4);
    opretOel("Royal",5);
  }
 
  public void opretOel (String navn, int pris) {
    Oel nyOel = new Oel(navn,pris);
    System.out.println("Prisen for en "+navn+" er: "+pris);
    return;
  }
 
    while(koerer) {
      oensketoel = "ingen oel valgt";
      penge = 0;
      boolean handelIgang = true;
      while(handelIgang && koerer) {
        System.out.println("Indtast oeloenske, se valgt oel, se tilgaengelige oel, indkast penge eller stop automat:");
        System.out.println("\"valg\" <oelnavn>");
        System.out.println("\"seValg\"");
        System.out.println("\"indkast\" <antal penge>");
        System.out.println("\"stop\"\n");
        /*
        * Den foelgende linje er det sted programmet tager imod input fra brugeren.
        * Her saettes "ord" lig med den tekststreng brugeren indskriver.
        * Brug denne (... = input.nextWord()) hver gang der skal hentes en tekststreng
        * fra brugeren. Hvis man vil have et tal eller en boolean ind skal man bruge
        * hhv. input.nextInt() eller input.nextBoolean()
        *
        * HUSK: naar en handel er overstaaet skal "handelIgang" saettes til "false".
        *
        */
        String ord = input.nextWord();
       
        /*         
        * <String-variabel med tekststreng>.equalsIgnoreCase(<String-variabel med tekststreng>)
        * undersoeger om de to tekststrenge er lig hinanden, uden at tage forskel paa
        * store og smaa bogstaver i betragtning.
        */
        if(ord.equalsIgnoreCase("indkast")){
          int indkastedePenge = input.nextInt();
          if(indkastedePenge>0) {
            penge = penge + indkastedePenge;
            /*
            * Her kan det undersoeges om der er indkastet tilstraekkeligt med penge
            * og ud fra dette gaa videre. Hvis man har et objekt, der holder oeje med pengene
            * i automaten kan interaktion foregaa her.
            */
            System.out.println("\nAntallet af indkastede penge er: "+penge+"\n");
          } else {
            System.out.println("\nBeloebet skal vaere stoere end nul.\n");
          }
        } else if(ord.equalsIgnoreCase("valg")) {
          oensketoel = input.nextWord();
          System.out.println("Penge kan indkastes eller oel vaelges\n"+"Tilgaengelige oel er: ");
          /*
          * Bemaerk: Man kan aendres valget af en oel under selve handlen.
          * Dette skal aendes hvis det ikke passer med jeres design.
          *
          * Her kan man undersoege om oellen findes, og ud fra dette gaa videre
          */
        } else if(ord.equalsIgnoreCase("sevalg")){
          System.out.println("\nDen valgte oel er: "+oensketoel+"\n");
        } else if(ord.equalsIgnoreCase("stop")) {
          System.out.println("\nAutomaten stoppes!\n");
          koerer = false;
        } else {
          System.out.println("\nKommando ikke forstaaet.");
          System.out.println("Proev igen.\n");
        }
      }
    }}}
Avatar billede kalp Novice
14. januar 2007 - 13:30 #4
kan du ikke gøre os alle en tjeneste og skrive hvilken linje det er .. og ikke nummer
og hvad fejlmeddelelsen er? så går det meget hurtigere;)
Avatar billede chainweb Nybegynder
14. januar 2007 - 13:37 #5
File:  c://.... linie 32,
Error: illegal start of expression
public void Oelautomat () {


File: c://..... Linie 105,
Error: ';' expected
}}}
Avatar billede pidgeot Nybegynder
14. januar 2007 - 14:09 #6
Du afslutter STADIG ikke Start-metoden det rigtige sted - } skal jo være oppe før linie 32, da det er der den slutter (det er derfor du får den fejl i linie 32).

Desuden sagde jeg intet om at du skulle lave den constructor på linie 32 om til en almindelig metode, du skulle fjerne den øverste af dem, fordi det måtte være den nederste der var den rigtige.

Den sidste af fejlene kommer utvivlsomt fra at du har rod i dine tuborg-klammer. Nu ved jeg ikke om du bruger en IDE, eller hvad du gør, men hvis du gør og får den til at formatere koden lidt pænt, kan du sikkert se det noget nemmere end du kan der.
Avatar billede chainweb Nybegynder
17. januar 2007 - 18:58 #7
tak for hjælpen.. sender du svar pidgeot?
Avatar billede pidgeot Nybegynder
17. januar 2007 - 19:39 #8
Kommer her. :)
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