Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java, length()-metodissa ongelmia

Juuso [16.11.2005 19:07:27]

#

Hei
Olen yrittänyt säätää monenlaisia merkkijonoviritelmiä Javalla, joissa oleellisena osana on length()-metodin käyttö. Kääntäjä herjaa, ettei tuota metodia löydy. Mistä mahtaa olla kyse? Alla esimerkkikoodi, joka tuottaa kyseisen virheen

//Ohjelma joka laskee kuinka monta 5-kirjaimista nimeä on taulukossa
class Ohjelma {
	public static void main(String[] argh) {
		int montako=0;
		String[] nimet = {"Matti","Teppo","Seppo","Kalle"};
		for(int i=0; i<nimet.length()-1; i++) {
			if(nimet[i].length() == 5) {
				montako++;

			}//end if
		}//end for
		System.out.println(montako);
	}//end main
}//end class

Deewiant [16.11.2005 20:04:25]

#

Taulukon length ei ole metodi. Käsittääkseni se on kieleen sisäänrakennettu juttu, mutta tästä en ole ihan varma.

Ratkaisu on kuitenkin ottaa sen perästä sulut pois, eli ihan vain nimet.length - 1.

Juuso [16.11.2005 20:15:21]

#

Kiitos ratkaisusta, nyt onnistuu. Eiköhän nämä javan salat ala vähitellen selviämään.

Sami [16.11.2005 21:52:45]

#

Itseasiassa String-luokassa on metodi length(), joka palauttaa merkkijonon pituuden. Taulukoissa sen sijaan on length-niminen vakio (tai mikä vastaava nyt onkaan), joka sisältää tiedon taulukon pituudesta.

Lisäksi rivi
for(int i=0; i<nimet.length()-1; i++) {
ei käy läpi kaikkia nimet-taulukon alkioita, vaan viimeinen alkio jää käymättä läpi. Tämä johtuu siitä, että taulukon pituus on n-alkiota (edes jonkinlaisen selkeyden vuoksi käytän taulukon pituudesta merkintää n, enkä nimet.length) pitkä (eli indeksit 0 -> n-1), mutta for-silmukan ehtolause (i<n-1) lopettaa taulukon läpikäymisen jo siinä vaiheessa kun i ei ole enää aidosti pienempi kuin n-1. Tässä tapauksessa siis viimeisen läpikäytävän alkion indeksi on n-2.

Vastaus

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

Tietoa sivustosta