Gå til innhold

hjelp med metoder for å java program terningkast


Anbefalte innlegg

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 :D

Lenke til kommentar
Videoannonse
Annonse
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 :D

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.

Lenke til kommentar
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 :D

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 av zissou
Lenke til kommentar

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 av wernie
Lenke til kommentar
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...