Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Sulkeet lenght -metodissa vaihtojärjestämisessä

hevonen [20.11.2008 15:42:20]

#

Tässä viestissä https://www.ohjelmointiputka.net/keskustelu/18173-java-ongelmia-length-kanssa
oli juttua sulkeiden käytöstä length -metodissa. Itselläni kuitenkin vaihtoJärjestäminen toimii ilman sulkeita.

Koodi on:

class Arvohaku {
   private int[] taulu = {12,24,1};

   //metodi
   private static void vJ(int[] taulu){
      for(int i=0; i< taulu.length-1; ++i){
         for(int j=i+1; j< taulu.length; ++j)
            if(taulu[i] > taulu[j]){
               int apu = taulu[i];
               taulu[i] = taulu[j];
               taulu[j] = apu;
            }
      }
   }

   public static void main(String[] args){
     Arvohaku A = new Arvohaku();
     A.vJ(A.taulu);

     for(int i=0; i<A.taulu.length-1; ++i)
        System.out.println(A.taulu[i]);
   }
}

Miksi tässä koodissa ei saa olla length -metodin kutsussa sulkeita? Normaalistihan metodi kutsussa pitää olla sulkeet.

TsaTsaTsaa [20.11.2008 15:49:49]

#

Kuten tuolla linkkaamassasi ketjussa mainittiin, taulukoilta löytyy length-kenttä (ei siis metodi).

hevonen [20.11.2008 16:08:32]

#

TsaTsaTsaa kirjoitti:

Kuten tuolla linkkaamassasi ketjussa mainittiin, taulukoilta löytyy length-kenttä (ei siis metodi).

Kiitos! Eli jos halutaan saada yhden alkion merkkimäärän pituus, niin käytetään length(). Length ilman sulkeita kertoo puolestaan taulukon alkioiden lukumäärän.

Blaze [20.11.2008 16:49:24]

#

Ja List-rajapintaa toteuttavilla container-luokilla niiden sisältämien otusten määrän taas saa size()-metodilla. Ever heard of consistency, Sun? :)

Päärynämies [20.11.2008 18:15:51]

#

hevonen kirjoitti:

TsaTsaTsaa kirjoitti:

Kuten tuolla linkkaamassasi ketjussa mainittiin, taulukoilta löytyy length-kenttä (ei siis metodi).

Kiitos! Eli jos halutaan saada yhden alkion merkkimäärän pituus, niin käytetään length(). Length ilman sulkeita kertoo puolestaan taulukon alkioiden lukumäärän.

Ja vielä tähän pientä varmistelua (kun noin yleistäen tuon ilmaiset vieläpä kun esimerkissäsi ei tainnut olla String -taulukkoa käytössä), että tuo mainitsemasi pätee siis String -luokan olioita sisältävälle taulukolle (tai vastaavasti muiden luokkien olioille, joilta löytyy metodi length, mitä se sitten niillä tekeekään). Esimerkiksi taulukoille, jotka sisältävät kokonaislukuja (int), tuo ei toimi, koska kokonaisluvut eivät ole olioita, eikä näin ollen niillä mitään metodejakaan ole.

Jos sinulla on merkkijonotaulukko, niin luonnollisestikin voit myös muita String -luokan metodeita kutsua. Eli jos on

String merkkijonot[] = { "Kissa", "Kani", "Kameli" };

niin seuraavat ovat ihan oikein

merkkijonot[0].length() // Palauttaa 5
merkkijonot[1].toUpperCase() // Palauttaa "KANI"

Seuraava on siis kuitenkin väärin

merkkijonot.length()

koska tuolla taulukolla ei ole length -metodia.

Vastaus

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

Tietoa sivustosta