1 van 1

Java probleem

Geplaatst: wo 30 mei 2007, 10:52
door rvdp
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?

Re: Java probleem

Geplaatst: wo 30 mei 2007, 12:27
door zpidermen
Je bent 3 sluit-accolades } vergeten...

Re: Java probleem

Geplaatst: wo 30 mei 2007, 13:05
door rvdp
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.

Re: Java probleem

Geplaatst: wo 30 mei 2007, 15:16
door Fikr_El7or
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

Re: Java probleem

Geplaatst: wo 30 mei 2007, 15:29
door rvdp
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!

Re: Java probleem

Geplaatst: wo 30 mei 2007, 15:42
door Fikr_El7or
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

Re: Java probleem

Geplaatst: wo 30 mei 2007, 16:11
door rvdp
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.

Re: Java probleem

Geplaatst: vr 01 jun 2007, 04:41
door Fikr_El7or
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