/** * Write a description of class Die here. * * @author (your name) * @version (a version number or a date) */ public class Die { // private int die; - SLETTES, BRUGES IKKE private int eye; private int increment; private java.util.Random r;
/** * Constructor for objects of class Die */ public Die() { r = new java.util.Random(); - FLYTTET OP
/** * obtain a new number of eyes for this die. */ public void throwDie() { // if((0 <= eye && eye <= 6)) {r.nextInt(6);} - NEJ, SOM NEDENFOR: eye = r.nextInt(6) + 1; }
/** * = the number of eyes of thus die. */ public int getEyes() { // if(0 < eye && eye < 7) {return eye;} - HVORFOR TJEKKE? return eye; } }
Opgaven lyder helt eksakt: Lav en klasse DieCup, der repræsenterer et raflebæger indeholdende to terninger. Der skal være to metoder i klassen, throwDice og getEyes, der giver mulighed for dels at slå med bægeret (dvs. med begge terninger), dels at inspicere hvor mange øjne der blev slået i alt. -------------------- | DieCup | |------------------| | Die d1 | | Die d2 | -------------------- | void throwDice() | | int getEyes() | -------------------- Hint: Implementer klassen med to feltvariabler af typen Die uden iøvrigt at spekulere på hvordan klassen Die er implementeret.
1) Genlæs lige 23/09-2007 16:22:00 2) Din getEyes() vil slet ikke kompilere - du bør spørge dog selv om hvorfor. 3) Din getEyes() bør udnytte det faktum at d1 og d2 også har getEyes() funktioner.
Jeg er ligeglad med hele din kode. Jeg har ikke bedt om den. Vi kigger på getEyes-metoden i Diecup-klassen. Ikke andet. Hvordan vil du løse punkt a) i den liste jeg har givet dig?
Jeg kan regne ud du går på 1. semester på Datalogi på Århus Universitet. Du har haft programmering i et par uger eller så'n. Det er kun rimeligt at være lidt forvirret og ikke helt vide hvad der er hvad. Men både i opgaverne, og i de indlæg du læser her, er der helt klare og utvetydige vejledninger til hvad du skal gøre. Jeg kan ikke se at du læser dem, eller forstår dem.
Skal du gennemføre et studium på universitet, så skal du være i stand til at læse.
Når du kommer til efterårsferien, så sæt dig ned og find ud af med dig selv hvad du rent faktisk har lært og kan klare selv. Brug noget tid på det. Vær ærlig med dig selv.
Er konklusionen at du ikke har lært noget, og ikke kan noget, så er der vel to muligheder: 1) Gi' op 2) Tage fat på studiet på en anden måde.
Du kan ikke gennemføre ved at 3-4 personer hjælper dig igennem hver eftermiddag - og det gider vi nok heller ikke... ;)
Okay, jeg har lavet to metoder, som står i koden, men vil du forklare mig, hvad der er galt i koden? Jeg forstår det ikke helt. Jeg har prøvet at forstå næsten hele dagen
Koden i 23/09-2007 17:43:43 var nu ellers meget god da den viser at du faktisk kan tilpasse en anden løsning som dur. Og den giver forresten ikke 5 hele tiden.
Men, erikjacobsen har ret, det er jo *ikke* den korrekte løsning på den opgave du har fået stillet.
"Du kunne jo starte med at spørge (os) om præcist hvad du ikke forstår." - bemærk ordet "præcist".
Det ville være så let for os bare at give dig løsningen, hente nogle point, og så komme videre med vore liv - men det er dig der skal lære det.
Lad os så alligevel snakke lidt om det.
A) Du bliver bedt om at lave en klasse Die - den står et sted deroppe. Du er velkommen til at vise os hvordan din ser ud nu.
B) Du bliver bedt om at labe en klasse DieCup, som bruger den klasse du har lavet i A). Klassen DieCup er ligegyldig - i denne sammenhæng - hvis du ikke bruger klassen Die. Den er der her ovenfor i en slags foreløbig udgave, men den sidste du viser bruger ikke klassen Die.
Rigtigt, nielle 'det er jo *ikke* den korrekte løsning' - og da det er en skole-opgave, så er den ikke bare ikke-korrekt - den er forkert. Selv om den så måske endda virker.
d1 er et objekt af klassen Die. Die-klassen har en metode som hedder getEyes() og den returnere antallet af øjne. Du får derfor antallet af øjne ved dette: d1.getEyes(). Den værdi bliver du nødt til at gemme, hvis du skal bruge den sernere. Og det skal du jo skal hvis du vil udregne summen mellem d1- og d2-terningerne. Den bedste løsning på det problem er at gemme den i en variabel specielt til formålet. Da getEyes() returnere en int-type skal variablen også være en int.
Derfor:
Det korte svar på a):
int eye1 = d1.getEyes();
Derfor:
public class Diecup { private int Die d1; private int Die d2; private java.util.Random r;
public Diecup() { d1 = new Die(); d2 = new Die(); }
// ...
/** * = the number of eyes of thus die. */ public int getEyes() { int eye1 = d1.getEyes(); // b) find antal øjne på d2 // c) læg de to tal sammen // d) returner summen } }
"Vil du forklare mig, hvad jeg gør forkert?" - nej, jeg vil ikke. Det er den helt forkerte indstilling, hvis du skal lære noget. DU skal finde spørgsmålene - de præcise spørgsmål. Eet af gangen.
Ja, altså hvis jeg skal fortolke det du siger som at du ikke ved eller mener at den skal bruges i DieCup, som jeg spurgte efter, så er det nok rigtigt at den ikke skal være i DieCup.
Kan du fortælle mig, Ole, hvad der sker i denne linie:
Spørgsmål: " Der skal være to metoder i klassen, throwDice og getEyes, der giver mulighed for dels at slå med bægeret (dvs. med begge terninger), dels at inspicere hvor mange øjne der blev slået i alt. " Hvordan slår man med to på én gang?
/** * = the number of eyes of thus die. */ public int getEyes() { int eye1 = d1.getEyes(); int eye2 = d2.getEyes(); Die = int eye1 + int eye2; return Die; }
/** * = the number of eyes of thus die. */ public int getEyes() { int eye1 = d1.getEyes(); int eye2 = d2.getEyes(); int Die = int eye1 + int eye2; return int Die; }
Det her er *meget* fundamentale spørgsmål du stiller ... hvis du ikke selv kan svare på dem efter at have læst de første par sider i jeres lærenbog ... så skal du læse den igen!
Jeg vil dog soge så meget som at der ikke skal stå int Die på venstresiden af =-tegnet. "Die" er allerede brugt til et andet formål, og kan derfor ikke bruges.
Hvis du kan spørge om helt elemæntære ting efter at have læst bogen ... ja, så behøver du altså at læse bogen igen! At vi giver dig svaret, vil det bare være at gøre dig en rigtig dårlig tjeneste.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.