Hei, vähän apua kaipaisin.
Lotto-ohjelma piti tehdä kurssin päätteeksi. No muuten ois melko valmis ja kaiken osaan, mutta olio-ohjelmoinnista en oikeen pääse jyvälle.
Lottonumerot on arvottu jne. ogelmana on lottokupongit.
Kuponkeja pitäisi saada ostaa niin monta kuin rahat riittävät. Helpointapa tämän tekemiseen lienee että tehdään kuponki-oliot jotka pitävät sisällään int[7] taulukon joita sitten synnytellään aina kun pelaaja ostaa uuden kupongin. Ja pidän erikseen kirjaa kierroksella ostetuista kupongeista. Joten kuinka pystyn tekemään globaaleja lottokuponki olioita?
EDIT: typo
Miksi lottokuponki-olioiden pitää olla globaaleja? Teet niitä pääluokassa, laitat niitä vaikka vektoriin. Luokkamuuttujiahan (siis luokan sisällä näkyviä) saat määriteltyä kunhan esittelet ne vain metodien ulkopuolella. Toisaalta toisillekin olioille näkyviä saat muuttujista määrittämällä niiden näkyvyystyypiksi public.
Enpä osaa tarkemmin neuvoa ilman tarkempaa kuvausta itse ongelmasta.
JTS kirjoitti:
Enpä osaa tarkemmin neuvoa ilman tarkempaa kuvausta itse ongelmasta.
Joo siis... siis ongelmani on tämä: Lottokuponkeja pitää pystyä tekemään rajattomasti ennen lauantain arvontaa. Jos teen luokkaan muuttujan kuponki[7] jolloin voin käsitellä vain yhtä kuponkia. jos teen kuponki[100000][7] voin käsitellä 100000 kuponkia ja tämä ratkaisumalli alkaa viemään muistia aika paljon koneesta, kuinka siis saisin tehtyä niin että kuponki taulukon koko kasvaisi aina yhdellä kupongilla kuponki osto/täytön jälkeen?
Ahaa. Ok, eli käytä vektoreita:
import java.util.Vector; public class Vektori { /** * @param args */ public static void main(String[] args) { //Luodaan vektori Vector vektori = new Vector(); //Lisätään vektoriin alkioita vektori.add(20); vektori.add(30); //Yksi tapa käydä läpi vektorin sisältämät alkiot for (int i = 0; i < vektori.size(); i++) { //Tulostetaan sisältö System.out.println(vektori.get(i)); } } }
Käänsin tuon 1.4 JRE:lle, 1.6:ssa taitaa jo pitää tyypittää tuo vektori (no, ainakin Eclipse ja NetBeans osaa tuon fiksata itsekseenkin). Eli vektoriin voi nakata mitä vain olioita, ja koon kasvattaminen on helppoa. Googlella löytyy paljon lisäinfoa.
Vector luokan sijaan List ja ArrayList. Vector on niin Java 1.0/1.1.
List-rajapinta toteutuksineen tulivat vuonna 1998 Java 1.2:n yhteydessä, eikä sen jälkeen ole ollut järkeä käyttää Vector-luokkaa (paitsi Java ME:ssä). Ihme että Vectoria näkee vieläkin useissa oppimateriaaleissa ja koodiesimerkeissä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.