rvdp
Artikelen: 0
Berichten: 43
Lid geworden op: do 28 dec 2006, 17:11

Java probleem

Bij uitvoeren van volgende (simpele) code om de dagen van een maand te bepalen:

Code: Selecteer alles

class dageninmaand

{

public static void main(String[]args)

{

char maand; 

int aantalDagen;

Input inp=new Input();

System.out.println("Geef maand in: ");

readLine();

maand=inp.readChar();

switch(maand)

{

case 'januari':

case 'maart':

case 'mei':

case 'juli':

case 'augustus':

case 'oktober':

case 'december':aantalDagen=31;break;

case 'april':

case 'juni':

case 'september':

case 'november':aantalDagen=30;break;

case 'februari':

System.out.print("Geef jaar in: ");

int jaar=inp.readInt();

boolean schrikkel=(jaar%400==0)||((jaar%4==0)&&(jaar%100!=0));

if(schrikkel) aantalDagen=29;

else aantalDagen=28;

default:System.out.println("Ongeldig");

}

System.out.println("Aantal dagen: "+aantalDagen);

}

}
krijg ik in JCreator voor regels 20 tot 33 steeds volgende foutmeldingen: "Unclosed character literal" en "Not a statement"

Wie kan mij helpen?
Gebruikersavatar
zpidermen
Artikelen: 0
Berichten: 1.623
Lid geworden op: do 17 nov 2005, 14:27

Re: Java probleem

Je bent 3 sluit-accolades } vergeten...
Beter kaal als geen haar want een kip snurkt
rvdp
Artikelen: 0
Berichten: 43
Lid geworden op: do 28 dec 2006, 17:11

Re: Java probleem

Blijkbaar past de code niet volledig in 1 box, hier het vervolg...

Code: Selecteer alles

int jaar=inp.readInt();

boolean schrikkel=(jaar%400==0)||((jaar%4==0)&&(jaar%100!=0));

if(schrikkel) aantalDagen=29;

else aantalDagen=28;

default:System.out.println("Ongeldig");

}

System.out.println("Aantal dagen: "+aantalDagen);

}

}
De 3 accolades waren aanwezig.
Gebruikersavatar
Fikr_El7or
Artikelen: 0
Berichten: 11
Lid geworden op: vr 11 mei 2007, 01:29

Re: Java probleem

beste rvdp,

ik denk da gij ervaring hebt me visual basic, maar in java, c, c++, .. zijn er beperkingen in het gebruik van switch statement!

in elk geval moet de zwitch expressie van het type int, char, byte of short zijn, de typen byte en short zijn weinig gebruikte typen voor kleine gehele getallen..

ik heb het over java t/m java 6

typen long, double, of float zijn ni toegestaan dus in de praktijk moet je vaak integer of charachters gebruiken..

een techniek om strings te gebruiken met int typen

Code: Selecteer alles

final int MAANDAG = 1, DINSDAG = 2, WOENSDAG = 3, ...;

int weekdag = ...;

  switch(weekdag) {

   case MAANDAG:

   ...

   break;

   case DINSDAG:

   ...

   break;

..

}
veel succes
Wisdom is found only in truth

(Johann Wolfgang von Goethe)
rvdp
Artikelen: 0
Berichten: 43
Lid geworden op: do 28 dec 2006, 17:11

Re: Java probleem

Totaal geen ervaring met programmeren eigenlijk :grin:

Ik denk dat ik begrijp wat je bedoelt, maar mijn switch is toch wel degelijk van het type char, of zie ik dat verkeerd?

Verder moet er bij jouw methode een cijfer 1,2,3,... worden ingegeven als dag (in mijn geval maand), terwijl ik dat wil vermijden. De naam van de maand moet letterlijk worden ingetypt door de gebruiker.

Alvast bedankt!
Gebruikersavatar
Fikr_El7or
Artikelen: 0
Berichten: 11
Lid geworden op: vr 11 mei 2007, 01:29

Re: Java probleem

beste,

u declaratie is indd. van het type Char char maand;

ma u initialisatie niet.

case 'januari' ==> mag nietn dit is een string en geen char en weet je wa een string is?

een string is een array van chars!

dus als je zo doet

case 'j':

case 'f':

case 'm':

.. dan moet het wel lukken ...

su6

groetjes
Wisdom is found only in truth

(Johann Wolfgang von Goethe)
rvdp
Artikelen: 0
Berichten: 43
Lid geworden op: do 28 dec 2006, 17:11

Re: Java probleem

Nooit bij stilgestaan...

Dit levert wel een probleem op voor maanden januari/juni/juli en maart/mei, maar goed, ik snap het idee erachter nu.

Hartelijk dank!

PS: Strings en arrays zijn mij tot nu toe nog onbekend...zal hoogstwaarschijnlijk wel in de volgende maanden aan bod komen.
Gebruikersavatar
Fikr_El7or
Artikelen: 0
Berichten: 11
Lid geworden op: vr 11 mei 2007, 01:29

Re: Java probleem

rvdp schreef:Nooit bij stilgestaan...

Dit levert wel een probleem op voor maanden januari/juni/juli en maart/mei, maar goed, ik snap het idee erachter nu.

Hartelijk dank!

PS: Strings en arrays zijn mij tot nu toe nog onbekend...zal hoogstwaarschijnlijk wel in de volgende maanden aan bod komen.
een String is eigenlijk een Array van chars

een array is een collectie van bepaalde datatype, int, double, char, ..

bv

char a[] = "balblabla"; // C-taal

a[0]= 'b'; .. etc

maar in Java is eigenlijk iets hoger dan C, en String in Java is gewoon een instantie van de klasse String en dus geen primitief type .. dus String is gewoon een object en vaak is het handig om een naam voor een String object te verzinnen. Je moet dan een referentie naar de klasse declareren.

vb

String strMijNaam; // String referentie

strMijnNaam = "blablabalab";

in dit voorbeeld is strMijnNaam een referentie vaan een String, net als elke variabel moet je een referentie eerst declareren

String strMijnNaam;

en dan kun je vervolgens de referentie vaar een bepaalde String object laten verwijzen:

strMijnNaam = "blablabla";

Dit is belangrijk:

wanneer jij in Java een object van een bepaalde klassen aanmaakt dan moet je da met new initialiseren zoals bijvoorbeeld

button btnKnop;

btnKnop = new Button("Ok");

theoretisch gezien moet dat ook voor String gebeuren en dus:

strMijnNaam = new String("blablablabla"); // maar dit is een uitzondering en daarom lijkt het een beetje op primitief type maar het is wel mogelijk om da op deze manier te doen .. maar ik zeg altijd indien het gemakkelijker en korter kan waarom dan nog moeilijker doen?

Dit is alles in het kort over Strings in Java!

veel cu6
Wisdom is found only in truth

(Johann Wolfgang von Goethe)

Terug naar “Informatica en programmeren”