1. #1
    Pudmeister's Avatar
    Registered
    20/08/11
    Location
    DS
    Posts
    853
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/1

    JAVA (BlueJ) Identifier expected

    Hallo allemaal,

    BlueJ geeft een error bij de volgende code:

    public class Datum
    {
    private int dag;
    private int maand;
    private int jaar;

    private static String[] maanden;
    maanden = new String[12];
    }

    Wanneer ik private static String[] maanden = new String[12]; gebruik werkt het wel, maar dit moet toch ook op 2 verschillende lijnen gaan? Stel dat ge met een integervariabele de lengte van de array wilt instellen, moet ge toch maanden = new String[ingegevenaantal]; kunnen uitvoeren.

    In Ecplise werkt dit stukje code wel maar niet in BlueJ...

    Edit: nog een pittig detail:
    Wanneer ik in Eclipse
    String[] maanden;
    maanden = new String[12];

    zet in de klasse datum komt er ook een fout (Syntax error on token ";", , expected), maar wanneer ik exact dezelfde code in de mainfunctie zet, komt deze foutmelding er niet
    Last edited by Pudmeister; 06-03-2012 at 17:10.
    no votes  

  2. #2
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Je kan dat op die manier alleen maar initialiseren als dat via een functie of je constructor gebeurd. Niet halverwege je klasse definitie.

    Het is dus ofwel:
    Code:
    public class Datum {
      private static String[] maanden = new String[12]
    }
    of
    Code:
    public class Datum {
      private static String[] maanden;
    
      // Hier de constructor, maar dat kan ook via een functie.
      public Datum() {
        maanden = new String[12];
      }
    }
    Vanaf nu gaan we verder op BeyondGaming!
    In deze thread wordt uitgelegd hoe je jouw account kan migreren.
    no votes  

  3. #3
    forloRn_'s Avatar
    Registered
    23/11/03
    Location
    Landeurp
    Posts
    1,791
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    10/17
    Protip: een klassedefinitie is geen functie en omgekeerd dus je kunt er niet hetzelfde mee doen.

    Protip 2: als je gebruik maakt van een static initializer block kan je het wel opsplitsen:
    Code:
    private static String[] maanden;
    
    static {
        maanden = new String[12];
    }
    no votes  

  4. #4
    Pudmeister's Avatar
    Registered
    20/08/11
    Location
    DS
    Posts
    853
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/1
    Je hebt gelijk, 't werkt enkel vanuit een functie of meteen initialisatie bij declaratie. Dat hadden ze mij niet verteld in de les... Daar hadden we dit enkel getest in een mainfunctie, daar kan je wel waarden toekennen waar ge maar wilt, maar in een klassedefinitie gaat dat precies niet overal.... Bedankt!

    (Sorry voor de noob-vraag, maar 'k had op voorhand de errors gegoogeld, stukken code uitgeprobeerd,... zonderdat ik zag wat precies het probleem was)
    no votes  

  5. #5
    *Fmc*'s Avatar
    Registered
    26/02/04
    Location
    Aarschot
    Posts
    1,543
    iTrader
    49 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/5
    Met een array van 11 kom je trouwens ook al toe om alle maanden in een array te zetten.
    Een array begint te tellen vanaf 0 en niet vanaf 1
    Your gaming universe
    no votes  

  6. #6
    forloRn_'s Avatar
    Registered
    23/11/03
    Location
    Landeurp
    Posts
    1,791
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    10/17
    Quote Originally Posted by *Fmc* View Post
    This quote is hidden because you are ignoring this member. Show
    Met een array van 11 kom je trouwens ook al toe om alle maanden in een array te zetten.
    Een array begint te tellen vanaf 0 en niet vanaf 1
    Ja vriend, maar er zitten wel 12 elementen in. new String[12] is juist.
    no votes  

  7. #7
    Pudmeister's Avatar
    Registered
    20/08/11
    Location
    DS
    Posts
    853
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/1
    Ja, wanneer ge

    Code:
    String[] maanden = new String[12];
    gebruikt, wordt er een array gemaakt waar ge 12 strings in kunt zetten, dus van index 0 tot 11. Bij de initialisatie geeft ge het aantal elementen (12) mee, niet de hoogste index (11).
    no votes  

  8. #8
    Jerre Muesli's Avatar
    Registered
    08/09/02
    Location
    -
    Posts
    2,044
    iTrader
    9 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/6
    Short note: Java kent enkel methods
    no votes  

  9. #9
    *Fmc*'s Avatar
    Registered
    26/02/04
    Location
    Aarschot
    Posts
    1,543
    iTrader
    49 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/5
    Ow ja, even verward. Mijn excuses >.<

    Nu schaam ik me ff heel diep
    Ge zou niet zeggen dat ik al twee jaar met Java bezig ben xD
    Last edited by *Fmc*; 07-03-2012 at 00:31.
    Your gaming universe
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in