h_k Skrevet 11. januar 2007 Skrevet 11. januar 2007 Jeg sliter fortsatt endel med java programmering Og skal nå frustrerende lage et java program kalt Terningkast. Der skal jeg lage et program som kaster terninger og viser diverse resultater på skjermen. med hvert fall en klasse for en terning, en klasse for et simuleringsforsøk osv... Programmet skal gjøre følgende : • Kaste terningen 100 ganger. Verdiene legges inn i tabellen kast[1..100]. Deretter skrives tabellinnholdet ut på skjermen, 20 kast pr. linje (tips : formatert utskrift, 4 plasser). • Finne ut hvor mange kast det ble av hver verdi. Svarene legges inn i tabellen antall[1..6]. (Nøtt : Prøv å få det til uten å bruke if eller switch). Svarene skrives ut på skjermen. • Beregne gjennomsnittsverdien av kastene. Svaret skrives ut med 3 desimaler. • Finne ut hvor mange kast det måtte til for å få den første sekseren. Svaret skrives ut på skjermen. • Finne ut hvilken terningverdi det var flest av. Svaret skrives ut på skjermen. Noen som kan hjelpe meg med hvilke metoder og klasser jeg bør bruke som blir enklest i denne oppgaven? Takker for all hjelp
CruellaDeVille Skrevet 11. januar 2007 Skrevet 11. januar 2007 Jeg sliter fortsatt endel med java programmering Og skal nå frustrerende lage et java program kalt Terningkast. Der skal jeg lage et program som kaster terninger og viser diverse resultater på skjermen. med hvert fall en klasse for en terning, en klasse for et simuleringsforsøk osv... Programmet skal gjøre følgende : 1) Kaste terningen 100 ganger. Verdiene legges inn i tabellen kast[1..100]. Deretter skrives tabellinnholdet ut på skjermen, 20 kast pr. linje (tips : formatert utskrift, 4 plasser). 2) Finne ut hvor mange kast det ble av hver verdi. Svarene legges inn i tabellen antall[1..6]. (Nøtt : Prøv å få det til uten å bruke if eller switch). Svarene skrives ut på skjermen. 3) Beregne gjennomsnittsverdien av kastene. Svaret skrives ut med 3 desimaler. 4) Finne ut hvor mange kast det måtte til for å få den første sekseren. Svaret skrives ut på skjermen. 5) Finne ut hvilken terningverdi det var flest av. Svaret skrives ut på skjermen. Noen som kan hjelpe meg med hvilke metoder og klasser jeg bør bruke som blir enklest i denne oppgaven? Takker for all hjelp 7698420[/snapback] Fo#¤#%/()"() nettleser. hadde skrevet et langt svar, trykket backspace, og det tilsvarer visst back i browservindu... Helvetes firefox-utviklere. Nok om det, jeg forsøker igjen. Hva er simulering? Jeg ser for meg at du trenger min to, maks tre klasser. En for terninkast, en for samling av terninger og en med mainmetode. oppgave 1): array av terningkast med lengde antall ganger terningen skal kastes. Når du skal skrive det ut bruker du en loop. oppgave 2) hvor mange kast av hver verdi uten bruk av switch/if? Tja- metode vil jeg si da. Legge det inn: public void leggInnVerdi(int verdi){ minarry[verdi-1]++;} Hente det ut: public void antallAvHver(){ forløkke... } 3: gjennomsnittsverdi = alle kast-summer / antall kast. Kan summeres enten i array med oversikt over antall av hver verdi eller i array hvor du lagrer terningkast. 4: Loope gjennom array med alle terningkastene til verdien seks er funnet. Avbryt og returner index. 5: Finn index i telleAntallArray som er størst. Noe slikt.
zissou Skrevet 12. januar 2007 Skrevet 12. januar 2007 (endret) Jeg sliter fortsatt endel med java programmering Og skal nå frustrerende lage et java program kalt Terningkast. Der skal jeg lage et program som kaster terninger og viser diverse resultater på skjermen. med hvert fall en klasse for en terning, en klasse for et simuleringsforsøk osv... .. Noen som kan hjelpe meg med hvilke metoder og klasser jeg bør bruke som blir enklest i denne oppgaven? Takker for all hjelp 7698420[/snapback] Hei, er det oppgaveteksten som sier at du må ha en Terning klasse? Har lagd et raskt forslag (!), og brukte bare en liten hovedklasse og en simuleringsklasse. Har to sentrale arrays i simuleringsklassen som styrer med kastene og terningverdier. Flg. kode tar for seg punkt 1 og 2 i posten din (tar ikke hensyn til formattering). Resten av oppgavene er "triviell regning" (så hoppet over det); legg til regnemetoder og kall de fra konstruktøren. /** * Kaster en y-sidet terning x antall ganger. * Viser resultat og frekvens. * NB: Denne koden er ikke ment å være 100% politisk korrekt. * * @author zissou */ class Terningkast { public static void main(String[]args) { new Simulering(100, 6); // x antall kast, y antall sider på terningen } } // slutt klasse Terningkast class Simulering { int[]kast; // resultat arrayen for kastene int[]antall; // frekvensteller for sidene på terningen int antallKast, antallSider; public Simulering(int x, int y) { antallKast = x; antallSider = y; kast = new int[x]; antall = new int[y]; simuler(); vis(); System.out.println("\n[..fyll inn med resten av regningen/metodene her..]"); } void simuler() { int tempKast; // kast i vei. legger resultat i kast[] for(int i=0; i<antallKast;i++) { tempKast = (int)(Math.random()*antallSider); kast[i] = tempKast + 1; antall[tempKast]++; } } void vis() { System.out.println("\nResultat for " + antallKast + " kast med en " + antallSider + "-sidet terning:"); for (int i = 0; i < kast.length; i++) { System.out.print(kast[i]); } System.out.println("\n\nViser frekvens:"); for (int i = 0; i < antall.length; i++) { System.out.println(i+1 + " forekom " + antall[i] + " ganger"); } } } // slutt klasse Simulering Håper dette hjelper deg i gang:) Z. edit: skriveleif Endret 12. januar 2007 av zissou
___ Skrevet 12. januar 2007 Skrevet 12. januar 2007 (endret) Siden du allerede har fått en løsning tillater jeg meg å komme med mitt forslag. Dice.java import java.util.Random; public class Dice { protected int value; protected static Random random; public Dice() { if (random == null) { random = new Random(); } this.roll(); } public int getValue() { return this.value; } public int roll() { this.value = random.nextInt(6) + 1; return this.value; } } Game.java import java.text.DecimalFormat; public class Game { protected Dice dice; protected int[] rolls; protected int[] frequency; protected int sumOfRolls; public Game() { this.dice = new Dice(); this.rolls = new int[100]; this.frequency = new int[6]; this.sumOfRolls = 0; for (int i = 0; i < rolls.length; i++) { sumOfRolls += dice.roll(); rolls[i] = dice.value; frequency[dice.value - 1]++; } } public void displayRolls() { StringBuffer sb = new StringBuffer("Rolls:\n======\n"); for (int i = 0; i < rolls.length; i++) { sb.append(rolls[i]); if (i % 20 == 19) { sb.append("\n"); } else { sb.append(" "); } } System.out.println(sb.toString()); } public void displayFrequencies() { StringBuffer freq = new StringBuffer("Frequencies:\n============\n"); for (int h = 0; h < frequency.length; h++) { freq.append(h + 1 + ": " + frequency[h] + "\n"); } System.out.println(freq.toString()); } public int getRollsBeforeSix() { for (int i = 0; i < rolls.length; i++) { if (rolls[i] == 6) { return i + 1; } } return 0; } public float getAverageValue() { return (float) sumOfRolls / (float) rolls.length; } public int getWinner() { int max = 0; int winner = 0; for (int i = 0; i < frequency.length; i++) { if (frequency[i] >= max) { max = frequency[i]; winner = i + 1; } } return winner; } public static void main(String[] args) { Game game = new Game(); game.displayRolls(); System.out.println(); game.displayFrequencies(); System.out.println(); System.out.println("Number of rolls before 6: " + game.getRollsBeforeSix()); System.out.println(); DecimalFormat average = new DecimalFormat("#.000"); System.out.println("Average value: " + average.format(game.getAverageValue())); System.out.println(); System.out.println("Most frequent face: " + game.getWinner()); } } Hilsen Werner Endret 12. januar 2007 av wernie
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å