Morjens
Päätin alkaa harjoittelemaan Javaa Javalan oppailla ja harjoituksilla. Tehtävänanto on seuraava:
Javala kirjoitti:
Toteuta annettuun luokkaan staattinen metodi onRekisteriNumero(String s), joka palauttaa true, jos annettu merkkijono on auton rekisterinumero ja false muutoin. Oikeellisuuden tarkistamiseksi riittää, että katsotaan, että:
- merkkijonon pituus on 7 JA
- merkkijonosta löytyy viivamerkki '-' indeksistä 3 (hyväksytään siis myös esim. 123-ABC)Esimerkkejä oikeista: "ABC-123", "444-AAA"
Esimerkkejä väärästä: "313", "ABC+123"
Esimerkkisyöttö on "ABC-123", ja ohjelmani palauttaa false truen
sijaan.
public static boolean onRekisteriNumero(String s) { boolean tulos = false; if(s != null && s.length() == 7 && "-".equals(s.charAt(3))) tulos = true; return tulos; }
Missä mättää?
s.charAt(3) palauttaa yhden merkin (char) '-'
, joten se ei voi olla sama kuin teksti (string) "-"
. Voit joko verrata hakemaasi merkkiä merkkiin '-'
yhtäsuuruusvertailulla tai hakea merkin sijaan kokonaisen tekstinpätkän funktiolla substring.
Olisit voinut selvittää asian itsekin tekemällä muutamia kokeiluja esim. seuraavasti:
System.out.println("-".equals("-")); // true System.out.println("-".equals('-')); // false
Kiitos. En tiennytkään Javassa olevan merkitystä käyttääkö lainaus- vai heittomerkkejä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.