Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: char tyypin tarkistus if -lauseessa

hevonen [19.11.2008 13:25:18]

#

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.

Grez [19.11.2008 13:28:09]

#

(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.

hevonen [19.11.2008 13:40:19]

#

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?

Grez [19.11.2008 13:47:54]

#

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.

hevonen [19.11.2008 13:49:48]

#

Grez kirjoitti:

siinä lukee perima, eikä true. Sori mutta missasit aika tehokkaasti pointin.

Kiitos! Tuo ratkaisi ongelman. :)

Grez [19.11.2008 14:08:47]

#

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");
		}
	}
}

hevonen [19.11.2008 14:40:40]

#

@Grez: Hyvä selvennys!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta