Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Java: Taulukon summa for-silmukalla

Sivun loppuun

Juuso [14.11.2005 03:21:31]

#

Moni etenkin PHP:tä ja Pythonia käyttänyt ohjelmoija on havainnut, että kyseisissä kielissä on käytössä ns. foreach-rakenne joka mahdollistaa esimerkiksi taulukon alkioiden läpikäymisen. Myös Javasta löytyy tälläinen rakenne, joten ajattelin demonstroida sitä täällä koodivinkkinä jotta ihmiset innostuisivat Javailusta. Koodiesimerkki käy läpi taulukon alkiot läpi ja palautta niiden summan.

EDIT: Alkuehdot metodiin

Summa.java

/*Ohjelma joka laskee taulukon lukujen summan käyttäen *foreach-rakennetta. */
class Summa {
  public static void main(String[] argh) {
     int luvut[] = {1,2,3,4,5,6,7,8}; //esimerkkiluvut
     int summa = summa(luvut);
  }
  public static int summa(int[] taulukko) {
     int tulos=0;
     //foreach
     for(int i: taulukko) {
        tulos+=i;
     }
     return tulos;
  }//end summa();
}//end main();

tsuriga [20.11.2005 18:52:17]

#

Kiitos tästä, ei itselle tullut vuoden Javailujenkaan jälkeen tätä rakennetta tietoon. Lisäksi forilla voi olla noita erikoisempia muotoja kuin for(int i=0; i < 10; i++), joista en ole oikein tietoinen, haluaisitko niitäkin lisätä tähän?

Juuso [26.11.2005 21:23:48]

#

Erikoisempia muotoja? Itse en tiedä for-silmukasta muita muotoja kuin nämä kaksi. Tarkoitatko esimerkiksi seuraavan näköistä koodia:

class Kokeilu {
 public static void main(String argh) {
   double[] luvut = {1.4,1.41,1.4141};
   for(int i=0; luvut.length; System.out.println(luvut[i++]));
}

FooBat [26.11.2005 21:24:21]

#

lainaus:

Kiitos tästä, ei itselle tullut vuoden Javailujenkaan jälkeen tätä rakennetta tietoon.

Tuo ominaisuus tuli Javaan vasta uusimmassa eli 1.5 versiossa. Itse en juurikaan tykkää monista noista 1.5 version uusista ominaisuuksista, jotka vievät javaa enemmän c++:n tai pythonin suuntaan, mutta kai niistä joillekin on apua. Itse taidan vielä aika pitkään koodata kaiken java-koodini 1.4:lla lähinnä yhteensopivuus ja muista syistä.

Java 1.5: erityisominaisuuksia
http://java.sun.com/developer/technicalArticles/releases/j2se15/

_Pete_ [30.11.2005 09:58:55]

#

lainaus:

Erikoisempia muotoja? Itse en tiedä for-silmukasta muita muotoja kuin nämä kaksi. Tarkoitatko esimerkiksi seuraavan näköistä koodia:

class Kokeilu {
 public static void main(String argh) {
   double[] luvut = {1.4,1.41,1.4141};
   for(int i=0; luvut.length; System.out.println(luvut[i++]));
}

Tuossa on vaan pikku vika, nimittäin for() lauseen keskimmäisessä osassa pitää määritellä ehto, joka määrää jatketaanko looppia. Ehdon siis pitää palauttaa boolean arvo.

Chiman [30.11.2005 11:15:28]

#

Kas, vai on Javaan tullut tuollainen rakenne, hyvä niin. Hyvä koodivinkki. Kritiikkiä sen verran, että koodin sisennyksen voisi laittaa yhtenäiseksi ja johdannossa mainittua tulostusta ei koodissa ole.

Vertailun vuoksi - Pythonissa vastaava toimii näin:

luvut = [1, 2, 3, 4, 5, 6, 7, 8]
tulos = 0
for x in luvut:
    tulos += x

Oikeasti Pythonilla homma hoidettaisiin tietysti näin:

luvut = [1, 2, 3, 4, 5, 6, 7, 8]
tulos = sum(luvut)

Juuso [02.12.2005 19:06:59]

#

lainaus:

lainaus:

Erikoisempia muotoja? Itse en tiedä for-silmukasta muita muotoja kuin nämä kaksi. Tarkoitatko esimerkiksi seuraavan näköistä koodia:

class Kokeilu {
 public static void main(String argh) {
   double[] luvut = {1.4,1.41,1.4141};
   for(int i=0; luvut.length; System.out.println(luvut[i++]));
}

Tuossa on vaan pikku vika, nimittäin for() lauseen keskimmäisessä osassa pitää määritellä ehto, joka määrää jatketaanko looppia. Ehdon siis pitää palauttaa boolean arvo.

Totta turiset, tuossa on typo ja siinä pitäisi lukea

.....
for(int i=0;i < luvut.length;System.out.println(luvut[i++])
....

tsuriga [03.12.2005 15:14:44]

#

Minkä voi tietysti korjata siihen alkuperäiseenkin ;). Tarkoitin erikoisemmilla muodoilla näitä, missä joitakin osia for-lausekkeen ehdoista jätetään tyhjiksi, for(; ; 6) tms. (ja tuo on siis suuntaa antava, luultavasti toimimaton esimerkki asiasta). Jotenkin muistelen sellaisia nähneeni. Suht perustiedolta kuulostaa, mutta ei vain tullut moisiin törmättyä tarkemmin.


Sivun alkuun

Vastaus

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

Tietoa sivustosta