Ongelma on tarkistaa parametri, niin että se on tyypiltään char.
Miten tämä toteutettaisiin if -lauseessa?
Käytetään Metabolixin biologia esimerkkiä:
Alkuelain(char[] perima){ if(perima == ?) tee tämä; else tee tämä 2; }
Onko edellinen tapa mahdollinen tarkistaa char tyyppi? Eli ? -merkin tilalla pitäisi olla jotain, joka tarkoittaisi vain char -tyyppiä. Ehkä ongelma ratkeaisi jotenkin säännöllisillä lausekkeilla.
(Oletan että tuo perima vs. perina on vaan kirjoitusvirhe)
Onnistuu näin:
if (false) tee tämä; else tee tämä 2;
Se ei ole koskaan char, koska olet määritellyt sen char[]:ksi.
Jos tarkoituksesi oli tarkistaa onko esim. perima[0] char, niin se onnistuu seuraavasti:
if (true) tee tämä; else tee tämä 2;
Eli se on aina char, koska se on määritelty chariksi.
Grez kirjoitti:
if (true) tee tämä; else tee tämä 2;Eli se on aina char, koska se on määritelty chariksi.
Yritin tuota vinkkiäsi. Saan kuitenkin valituksen kääntäjältä:
found : char required: boolean if(perima)
Koodini on tämä:
char perima; if(perima) System.out.println("Jee");
Mikä koodissa on vikana?
Vika on, että siinä lukee perima, eikä true. :D
Sori mutta missasit aika tehokkaasti pointtini, että jos määrität jonkun muuttujan tyypiksi char, niin se ei voi muuttua yhtäkkiä joksikin muuksi. Jos yrität sijoittaa char muuttujaan jonkin muun kuin charin, niin saat joko virheilmoituksen tai antamasi tieto muutetaan lennossa char-tyyppiseksi.
Näin ollen pointtinani oli, että voit ihan yhtä hyvin kirjoittaa suoraan true siihen.
Grez kirjoitti:
siinä lukee perima, eikä true. Sori mutta missasit aika tehokkaasti pointin.
Kiitos! Tuo ratkaisi ongelman. :)
En tiedä sitten ajoitko takaa jotain tällaista, mutta tämä ei sovellu charille, joka ei ole objekti.
class Joo { public static void main(String[] args) { String jipii = "a"; Testi(jipii); } private static void Testi(Object Perima) { if (Perima instanceof String) { System.out.println("On se String"); } else { System.out.println("Sori, ei oo"); } } }
@Grez: Hyvä selvennys!
Aihe on jo aika vanha, joten et voi enää vastata siihen.