killkid Skrevet 10. september 2012 Del Skrevet 10. september 2012 Hei, jeg har fått i skoleoppgave å programmere vri8. Java er ikke akkurat min sterkeste side. Men jeg er villige for å lære. Jeg har til nå lagt 3 klasser: kort klassen: package BID100; public class kort { private int type, verdi; private static String[]typer = {"hjerter","spar","ruter","klover"}; private static String[]verdier = {"Ess","2","3","4","5","6","7","8","9","10","Knekt","Dronning","Konge"}; kort(int type, int verdi){ this.verdi=verdi; this.type=type; } public @Override String toString(){ return verdier[verdi]+ " av " + typer[type]; } public int getVerdi(){ return verdi; } public int getType(){ return type; } } kortstokk klassen: package BID100; import java.util.Random; import java.util.ArrayList; public class Kortstokk { private ArrayList<kort> kortene; Kortstokk(){ kortene = new ArrayList<kort>(); int index_1, index_2; Random generator = new Random (); kort temp; for (int a=0; a<=3; a++) { for (int b=0; b<13; b++) { kortene.add(new kort(a,b)); } } for (int i=0; i<100; i++){ index_1 = generator.nextInt(kortene.size()-1); index_2 = generator.nextInt(kortene.size()-1); temp = (kort) kortene.get(index_2); kortene.set (index_2, kortene.get(index_1)); kortene.set(index_1, temp); } } public kort trekkFraKortstokk(){ return kortene.remove(0); } public int getKortIgjen(){ return kortene.size(); } } Hand klassen: package BID100; import java.util.ArrayList; public class Hand extends Kortstokk { private ArrayList hand = new ArrayList<String>(); Hand(){ Kortstokk kortstokk = new Kortstokk(); for(int i = 0;i<=5;i++){ hand.add(kortstokk.trekkFraKortstokk()); } } Problemet er at jeg ikke får brukt Hand klassen som jeg ønsker. Driver klassen som er laget slik: package BID100; public class Spill { /** * @param args */ public static void main(String[] args) { Hand k = new Hand(); (Henter Hand, og hand skal trekke fem kort og legge dem i arraylisten.) System.out.println(k);(Skriver ut handen slik at jeg vet at den fungerer) } } System out put: BID100.Hand@1e5e2c3 Hvis jeg lager driver klassen direkte i Spill klassen og legger til kortene da, så får jeg outputen jeg ønsker (kløver 5, spar ess, etc..) Husk på at jeg ikke er så veldig flink med termologien i Java så gjerne forklar på et dummy nivå til meg Takk for hjelpen! Lenke til kommentar
Mads-b Skrevet 10. september 2012 Del Skrevet 10. september 2012 (endret) Hei, jeg har fått i skoleoppgave å programmere vri8. Java er ikke akkurat min sterkeste side. Men jeg er villige for å lære. Jeg har til nå lagt 3 klasser: kort klassen: package BID100; public class kort { private int type, verdi; private static String[]typer = {"hjerter","spar","ruter","klover"}; private static String[]verdier = {"Ess","2","3","4","5","6","7","8","9","10","Knekt","Dronning","Konge"}; kort(int type, int verdi){ this.verdi=verdi; this.type=type; } public @Override String toString(){ return verdier[verdi]+ " av " + typer[type]; } public int getVerdi(){ return verdi; } public int getType(){ return type; } } kortstokk klassen: package BID100; import java.util.Random; import java.util.ArrayList; public class Kortstokk { private ArrayList&--#60;kort&--#62; kortene; Kortstokk(){ kortene = new ArrayList&--#60;kort&--#62;(); int index_1, index_2; Random generator = new Random (); kort temp; for (int a=0; a&--#60;=3; a++) { for (int b=0; b&--#60;13; b++) { kortene.add(new kort(a,b)); } } for (int i=0; i&--#60;100; i++){ index_1 = generator.nextInt(kortene.size()-1); index_2 = generator.nextInt(kortene.size()-1); temp = (kort) kortene.get(index_2); kortene.set (index_2, kortene.get(index_1)); kortene.set(index_1, temp); } } public kort trekkFraKortstokk(){ return kortene.remove(0); } public int getKortIgjen(){ return kortene.size(); } } Hand klassen: package BID100; import java.util.ArrayList; public class Hand extends Kortstokk { private ArrayList hand = new ArrayList&--#60;String&--#62;(); Hand(){ Kortstokk kortstokk = new Kortstokk(); for(int i = 0;i&--#60;=5;i++){ hand.add(kortstokk.trekkFraKortstokk()); } } Problemet er at jeg ikke får brukt Hand klassen som jeg ønsker. Driver klassen som er laget slik: package BID100; public class Spill { /** * @param args */ public static void main(String[] args) { Hand k = new Hand(); (Henter Hand, og hand skal trekke fem kort og legge dem i arraylisten.) System.out.println(k);(Skriver ut handen slik at jeg vet at den fungerer) } } System out put: BID100.Hand@1e5e2c3 Hvis jeg lager driver klassen direkte i Spill klassen og legger til kortene da, så får jeg outputen jeg ønsker (kløver 5, spar ess, etc..) Husk på at jeg ikke er så veldig flink med termologien i Java så gjerne forklar på et dummy nivå til meg Takk for hjelpen! Legg til dette i Hand-klassen: public String toString() { return hand.toString(); } Tror ihvertfall alle Collections har implementert toString. Hvis det ikke går, må du itere over alle elementene i arraylisten til Hand of sette sammen en string selv. EDIT: Det d gjør nemlig, er å prøve å printe ut objektet "Hand" direkte. Siden Hand ikke har implementert metoden toString(), så bruker java java.lang.Object sin implementasjon i stedet, som ikke er mer avansert enn at den printer ut referansen til objektet. Men som sagt, tror alle Collections har implementert toString, men da må du printe ArrayLista, og ikke Hand eller Kortstokk. Endret 10. september 2012 av Mads-b 1 Lenke til kommentar
killkid Skrevet 10. september 2012 Forfatter Del Skrevet 10. september 2012 Legg til dette i Hand-klassen: public String toString() { return hand.toString(); } Tror ihvertfall alle Collections har implementert toString. Hvis det ikke går, må du itere over alle elementene i arraylisten til Hand of sette sammen en string selv. Elsker deg? Takk! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå