Avatar billede playmo Nybegynder
06. januar 2002 - 16:31 Der er 8 kommentarer og
1 løsning

Et lille forholdsvist let sprøgsmål for JavaKendere!

Hvis jeg har en String (fx. String Journal_nummer = \"C-002\") hvordan tjekker jeg så at pladsnummer 2(eller plads nr. 1, hvis man tæller som computeren når plads nr. 1 egentlig er plads nr. 0 bla bla bla..;)  ) er lig en bindestreg?? og evt. smider det ind i en exception så hvis den ikke er en bindestreg skal den melde fejl og sige \"Hov du der!, der skal være en bindestreg på plads nr. 2!!
Avatar billede bearhugx Nybegynder
06. januar 2002 - 16:39 #1

// Hent bogstav ud i variabel
char ch = journal_nummer.charAt(1);

// Test på om char er samme som \'-\' (bindestreg)
if (ch != \'-\')
{
  // Meddel fejl !!!
  System.out.pritnln(\"DER SKAL VÆRE BINDESTREG PÅ PLADS 2\");
} else
{
  // 2. tegn var bindestreg :-)
  System.out.println(\"Alt er OK\");
}

/Søren
Avatar billede bearhugx Nybegynder
06. januar 2002 - 16:41 #2
Ønsker du explicit at der skal kastes en exception...

(* igang med at greje, hvordan man kan føre den test over til en try/catch-blok - Er ikke så ferm til det med exceptions - bruger dem kun når der absolut er behov *)

/Søren
Avatar billede playmo Nybegynder
06. januar 2002 - 16:48 #3
Hvis alt held er ude med en exception kan jeg nøjes med din løsning, men foretrækker en exception...Personligt synes jeg den virker mere optiomalt, hvis man eller kan få det til at virke ;)
Avatar billede bearhugx Nybegynder
06. januar 2002 - 17:08 #4
ok...

På en lidt bagvendt måde ... (ps... jeg kommer nok med et bedre forslag - Jeg er igang med at læse nogle ressourcer om Exceptions nu, as we speak...)

men (here goes - synes dog det er en lidt bagvendt løsning :-/ )

try
{
  if ( journal_nummer.charAt(1) != \'-\' )
    throw new Exception();
} catch (Exception ex)
{
  // FEJL!
}

//Business as usual...
Avatar billede playmo Nybegynder
06. januar 2002 - 17:23 #5
ok det virker max...tak, men kan du lige svare mig på en ting?
catch (Exception ex)

Hvad betyder det?? er det hvis der sker en fejl så opfatter Java det som at den skal smide denne fejl??
Avatar billede bearhugx Nybegynder
06. januar 2002 - 17:27 #6
eller måske den lidt store

class UgyldigtJournalNummerException extends Exception
{
  public UgyldigtJournalNummerException()
  {}
}

på den klasse, som journal_nummer er i, laver du så en metode

void testJournalNummer throws UgyldigtJournalNummerException
{
  if ( journal_nummer.charAt(1) != \'-\' )
    throw new UgyldigtJournalNummerException();
}

i koden, hvor du vil teste om journalnummeret er gyldigt skriver du så ...
try
{
  testJournalNummer();
} catch (UgyldigtJournalNummerException ujnEx)
{
}

/Søren

PS: jeg synes det er en lidt stor ombæring, bare for at checke om der er \'-\' i 2. position på variablen, men måske er det bare mig, som ikke koder det ordenligt - Jeg er er forholdsvis ny til Exceptions
Avatar billede bearhugx Nybegynder
06. januar 2002 - 17:35 #7
Det betyder, at i testen
...
  if ( journal_nummer.charAt(1) != \'-\' )
    throw new Exception();
...
kaster jeg en Exception af typen \'Exception\'

umiddelbart efter, i catch-blokken, fanger jeg denne Exception (af typen \'Exception\') igen ved at skrive
...
  catch( Exception ex )
...
  hvis denne fanges/gribes, føres denne ind i variablen ex.

Personligt synes jeg at det er en gevaldig omvej, at bruge en Exception til at \'opdage\' om der ikke er \'-\' i 2. position...

Mit råd er : hvis du ikke _explicit_ har brug for at der skal kastes exception, så brug mit første løsningsforslag - IMHO er det bedst....


/Søren
Avatar billede playmo Nybegynder
06. januar 2002 - 17:35 #8
Tak Søren tjek lige kommentar over dig...Plz svar på det Spørgsmål.....Så er point\'ne dine
Har lavet det nemlig brugt lidt fra din Exception løsning nr. 1
Avatar billede bearhugx Nybegynder
06. januar 2002 - 17:49 #9
svar nok --- eller uddybning ???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester