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
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.
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.
ok
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.
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ä.
joo, tarkoitus on olla 10 oppilasta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.