Ich habe ein Problem in meiner Klasse, die ich einfach nicht herausfinden kann.Würfel Rollen Histogramm mit Loops
Das ist die Frage:
Der Zweck dieses Quiz ist es, das Verständnis für die Verwendung von Schleifen und Zählen sowie der Überprüfung der Verwendung von Zufallszahlen zu verstärken.
Ändern Sie das unten stehende Programm, um ein Histogramm zu drucken, in dem die Gesamtzahl der Würfeln aller möglichen Werte angezeigt wird, indem ein Zeichen wie # so oft gedruckt wird. Zwei Würfel werden in jeder Rolle verwendet.
Beispiel:
Histogram Gesamtzahl der Würfelrollen für jeden möglichen Wert zeigt.
würfeln Statistik (Ergebnis variiert):
2s: ######
3s: ####
4s: ###
5s: # #######
6s: ###################
7s: ############ #
8s: #############
9s: ##############
10s: ##### ######
11s: #####
12s: ####
~~~~~~~~~~~~~~~~~~~ ~~
Ich war nicht in der Lage, das Programm zu bekommen, das Histogramm im Beispiel zu drucken le oben.
Und das ist, was ich habe, so weit:
import java.util.Scanner;
import java.util.Random;
public class DiceStats {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random randGen = new Random();
int seedVal = 11;
randGen.setSeed(seedVal);
// FIXME 1 and 2: Set the seed to the Random number generator
int i = 0; // Loop counter iterates numRolls times
int numRolls = 0; // User defined number of rolls
// FIXME 3: Declare and initiate cariables needed
int numOnes = 0;
int numTwos = 0;
int numThrees = 0;
int numFours = 0;
int numFives = 0;
int numSixes = 0; // Tracks number of 6s found
int numSevens = 0; // Tracks number of 7s found
int numEights = 0;
int numNines = 0;
int numTens = 0;
int numElevens = 0;
int numTwelves = 0;
int die1 = 0; // Dice 1 values
int die2 = 0; // Dice 2 values
int rollTotal = 0; // Sum of dice values
System.out.println("Enter number of rolls: ");
numRolls = scnr.nextInt();
if (numRolls >= 1) {
// Roll dice numRoll times
for (i = 0; i < numRolls; ++i) {
die1 = randGen.nextInt(6) + 1;
die2 = randGen.nextInt(6) + 1;
rollTotal = die1 + die2;
// FIXME 4: Count number of sixs and sevens; complete the same for all other possible values
if (rollTotal == 1) {
numOnes = numOnes + 1;
}
if (rollTotal == 2) {
numTwos = numTwos + 1;
}
if (rollTotal == 3) {
numThrees = numThrees + 1;
}
if (rollTotal == 4) {
numFours = numFours + 1;
}
if (rollTotal == 5) {
numFives = numFives + 1;
}
if (rollTotal == 6) {
numSixes = numSixes + 1;
}
if (rollTotal == 7) {
numSevens = numSevens + 1;
}
if (rollTotal == 8) {
numEights = numEights + 1;
}
if (rollTotal == 9) {
numNines = numNines + 1;
}
if (rollTotal == 10) {
numTens = numTens + 1;
}
if (rollTotal == 11) {
numElevens = numElevens + 1;
}
else if (rollTotal == 12) {
numTwelves = numTwelves + 1;
}
System.out.println("Debugging: Roll " + (i+1) + " is " + rollTotal + " (" + die1 +
"+" + die2 + ")");
}
// Print statistics on dice rolls
System.out.println("\nDice roll statistics:");
// FIXME 5: Complete printing the histogram
System.out.println("1s: " + numOnes);
System.out.println("2s: " + numTwos);
System.out.println("3s: " + numThrees);
System.out.println("4s: " + numFours);
System.out.println("5s: " + numFives);
System.out.println("6s: " + numSixes);
System.out.println("7s: " + numSevens);
System.out.println("8s: " + numEights);
System.out.println("9s: " + numNines);
System.out.println("10s: " + numTens);
System.out.println("11s: " + numElevens);
System.out.println("12s: " + numTwelves);
}
else {
System.out.println("Invalid rolls. Try again.");
}
return;
}
}
Jede Hilfe sehr geschätzt werden würde.
Erster Blick: Es wäre gut, 'numOnes',' numTwos' usw. durch ein Array zu ersetzen. Außerdem: Könnten Sie genauer erklären, welches Problem Sie haben? Ich schätze, die richtige Anzahl von "#" in der Ausgabe zu drucken. – markspace
Wenn Ihr Problem eine sich wiederholende Zeichenfolge von # erzeugt, dann ist dies ein Duplikat von http://stackoverflow.com/questions/7107297/what-is-the-easiest-way-to-generate-a-string- von-n-wiederholten Zeichen – sprinter