Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java array keskiarvo

JimProfit [17.02.2009 18:05:21]

#

Miten toi keskiarvo tulis annetuista double arvoista, en saa lukemaan tota ohjelmaa oikeita lukuja.

Scanner reader = new Scanner(System.in);
        int amount = 0;
        double sum = 0;
        double points = 0;

        Student [] myStudents = new Student [11];

            for (int i = 1; i < 11; i++) {

            System.out.println("Type the number: ");

            points = reader.nextDouble();

            Student s = new Student();

            s.pts = points;
            myStudents[i] = s;

            amount++;
            sum+ = myStudents[i];  //tässä on joku VIRHE!!! tai muualla

            }

         for (int i = 1; i < 11; i++) {
            System.out.println("Number: " + i);
            System.out.println(myStudents[i].pts);

            System.out.println("Value: " + amount);
            System.out.println("Average: " + sum / amount);
        }
    }
}

Mod. lisäsi kooditagit

Metabolix [17.02.2009 18:15:29]

#

Operaattori += kirjoitetaan yhteen. Kääntäjäkin varmaan kertoi, että siinä kohti on virhe.

luku = luku + muutos;
luku += muutos;

Opettele myös ihan oikeasti käyttämään kooditageja, ettei moderaattoreiden tarvitse joka kerta lisätä niitä viesteihisi.

Teuro [17.02.2009 18:27:27]

#

Miksi muuten määrittelet muuttujan amount, koska sehän on tiedossa kaiken aikaa ( 10 )? Ohjelmointikielissä taulukoiden indeksit alkavat usein nollasta. Eihän tuo sinällään ole virhe, mutta minusta on selkeämpää, kun arvot alkavat nollasta.

Vakiolla pääsisit myös eroon paljaista luvuista, koska tuollahan on kaksi kertaa tehty identtinen for lause.

JimProfit [17.02.2009 18:28:38]

#

ok

tneva82 [18.02.2009 08:30:59]

#

Onkos tuossa for loopissa muuten pieni virhe vai onko javassa erillainen taulukkoindeksöinit? Eikö sen pitäisi olla int i=0 eikä i=1? Ainakin C:llä tuo kävisi vain 10 oppilasta eikä 11.

hunajavohveli [18.02.2009 08:45:24]

#

tneva82 kirjoitti:

Onkos tuossa for loopissa muuten pieni virhe vai onko javassa erillainen taulukkoindeksöinit? Eikö sen pitäisi olla int i=0 eikä i=1? Ainakin C:llä tuo kävisi vain 10 oppilasta eikä 11.

Indeksointi on samanlainen kuin C:ssä. Taulukossa on 11 alkiota, mutta tuossa vain kymmentä viimeistä käytetään. Ilmeisesti oppilaita kuuluukin olla vain 10, mutta ensimmäinen alkio jää turhaan käyttämättä.

JimProfit [18.02.2009 20:19:48]

#

joo, tarkoitus on olla 10 oppilasta.

Vastaus

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

Tietoa sivustosta