Thread: JAVA (BlueJ) Identifier expected
-
06-03-2012, 16:57 #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
-
-
06-03-2012, 17:34 #2Crew Member
- 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:
ofCode:public class Datum { private static String[] maanden = new String[12] }
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
-
06-03-2012, 17:44 #3Member
- 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
-
06-03-2012, 17:47 #4
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
-
06-03-2012, 19:16 #5Member
- 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 universeno votes
-
06-03-2012, 19:20 #6Member
- Registered
- 23/11/03
- Location
- Landeurp
- Posts
- 1,791
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 10/17
no votes
-
06-03-2012, 20:56 #7
Ja, wanneer ge
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).Code:String[] maanden = new String[12];
no votes
-
06-03-2012, 21:23 #8Member
- 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
-
06-03-2012, 23:34 #9Member
- 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 xDLast edited by *Fmc*; 07-03-2012 at 00:31.
Your gaming universeno votes

