Osaisko joku sanoa toimiiko tämä nyt oikein, tai jos ei niin mikä tässä mättää?
Kone näyttää vain yhden arvotun numeron ja ohjelma käy kokoajan, mutta mitään muuta ei tapahdu; ei tule loppua :).
eli ohjelma arpoo 20 numeroa ja käyttää taltioi (array) ja tulostaa ne.
Tossa on vielä lisäksi tietenkin se package -> (public int pts;)
public static void main(String[] args) { Scanner reader = new Scanner (System.in); String number = "1234567890"; Student [] myStudents = new Student [21]; for (int i = 1; i < 21; i++) { int points=(int)(number.length()*Math.random()); System.out.println(+points); points = reader.nextInt(); Student s = new Student(); s.pts = points; myStudents[i] = s; } for (int i = 1; i < 21; i++) { System.out.println("Number: " + i); System.out.println(myStudents[i].pts); } } }
Mod. lisäsi kooditagit
System.out.println(points) tosiaan tulostaa sen luvun. Seuraavalla rivillä oleva reader.nextInt() odottaa, että käyttäjä syöttää luvun, ja tallentaa syötetyn luvun points-muuttujaan. Jos poistat nuo molemmat rivit, ohjelma ehkä toimii haluamallasi tavalla.
Tämänkin voisit ratkaista lukemalla itse koodia rivi kerrallaan ja miettimällä, mitä milläkin rivillä tapahtuu.
ok kiitos, se ei ollutkaan monimutkaista.
Ja miksi tuossa koodissasi on
System.out.println(+piste);
kun se voisi olla:
System.out.println(piste);
tuota ylimääräistä '+'-merkkiä ei tarvita, se tulee vain, jos katenoidaan (=yhdistetään merkkijonoja), tai lisätään vain lukuja yhteen.
Säästyy hyvin pieneltä vaivalta, mutta onhan sekin jotain.. ;D
ja miksi teet tuon Math.random()-metodin noin vaikealla tavalla? se voisi yhtä hyvin olla näin:
int points = (int)(10*Math.random());
Tuossa ei tarvitse mitään turhaa number-muuttujaa, vaan se arpoo sen suoraan, eikä tuo ohjelma sakota muutamaa tavua muistia lisää ;D
Edit: muuten, oliko tuo tehty jonkin harjoituksen pohjalta, koska tuon ko. tulostuksen voisi tehdä näin:
public class TulostaSatunnainen { public static void main(String[] args) { int i = 0; while (i < 20) { int arpaluku = (int)(10*Math.random()); System.out.println("Luku oli: "+arpaluku); ++i; } } }
Ajattelin vain, koska tuo oli aika vaikealla tavalla tehty, ainakin tuohon yllä olevaan verrattuna.. :D
Edit: hmm... laitoin tämän tähän, enkä tuohon edelliseen viestiini, koska jostain syystä en voinut muokata sitä.
ja sitten tietenkin, jos haluaa tuonne jonkinlaisen blockin, ettei ohjelma vain tulosta ja lopu, laittaa sen Scannerin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.