Springen naar inhoud

Java probleem


  • Log in om te kunnen reageren

#1

rvdp

    rvdp


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 30 mei 2007 - 09:52

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

[codebox]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);

}

}[/codebox]

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

Wie kan mij helpen?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

zpidermen

    zpidermen


  • >1k berichten
  • 1623 berichten
  • Ervaren gebruiker

Geplaatst op 30 mei 2007 - 11:27

Je bent 3 sluit-accolades } vergeten...
Beter kaal als geen haar want een kip snurkt

#3

rvdp

    rvdp


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 30 mei 2007 - 12:05

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

[codebox]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);

}

}[/codebox]

De 3 accolades waren aanwezig.

#4

Fikr_El7or

    Fikr_El7or


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 30 mei 2007 - 14:16

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

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)

#5

rvdp

    rvdp


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 30 mei 2007 - 14:29

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!

Veranderd door rvdp, 30 mei 2007 - 14:30


#6

Fikr_El7or

    Fikr_El7or


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 30 mei 2007 - 14:42

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)

#7

rvdp

    rvdp


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 30 mei 2007 - 15:11

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.

#8

Fikr_El7or

    Fikr_El7or


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 01 juni 2007 - 03:41

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)





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures