I'm trying to complete a project and i'm getting an error message at the end where it says public static int factorial (int n). Does anyone know what I'm doing wrong?
import java.util.Scanner;
public class Histogram {
private static final int MIN_HEADS = 0; // minimum number of heads per set
/**
* main method:
* ask the user how many sets of coin flips and how many flips per set
* count occurances of heads in user specified number of sets of coin flips
* draw a horizontal and vertical histogram of the number of heads
*/
public static void main(String[] args) {
// set up to get user input
Scanner scan = new Scanner(System.in);
// ask user for the number of sets of coin flips
System.out.println("How many sets of coin flips do you want?");
int nSets = scan.nextInt();
// ask user for the number of coin flips per set
System.out.println("How many coin flips per set do you want?");
int nFlips = scan.nextInt();
// maximum number of heads that can occur is number of flips
int maxHeads = nFlips;
// calculate maximum length of histogram bars based on number of flips per set
// based on finding the number of combinations for half heads / half tails
// n!
// formula is ----------- with r = n/2
// r! (n-r)!
int maxLength = factorial (nFlips) /
(factorial (nFlips / 2) * factorial (nFlips - nFlips / 2));
// instantiate a coin object named myCoin
Coin myCoin = new Coin();
// step 1:
// declare an int array named "counts" to count coin flip occurences
// make its size one larger than maxHeads
int counts[] = new int [maxHeads + 1];
// step 2:
// initialize all of the values in the array to 0
for (int arrayindex = MIN_HEADS; arrayindex <= maxHeads; arrayindex ++)
counts[arrayindex] = 0;
// step 3:
// flip the coin for n sets with nFlips flips per set
// count the number of heads in each set (heads = 1, tails = 0)
// Using the value nSets (the number of sets of flips) and nFlips
// (the number of coin flips per set) from the user, execute a loop nSets times.
// Each time through this outer loop, your code starts with sum equal to zero and
// loops for nFlips times calling the flip method of myCoin, adding either one for a
// head or zero for a tail to the sum. After the inner loop completes, the outer loop
// uses the sum calculated by the inner loop as an array index, and increments the
// value of that element in the counts array.
for (int i = 0; i < nSets; i++) {
int sum = 0;
for (int j = 0; i < nFlips; j++)
{
sum = sum + (myCoin.flip()? 1: 0);
}
// step 4:
// print out the estimated probabilities of all heads and all tails
System.out.println ((float) counts [MIN_HEADS] / nSets);
// step 5:
// find largest number in counts array for scaling length of bars
int maxCount = 0;
for (int i = MIN_HEADS; i < maxHeads +1; i++)
{
if (maxCount <= counts )
{
maxCount = counts ;
}
// step 6:
// scale data in counts array to maximum length of bars
// add 0.5 to round off instead of truncate in conversion to int
for (int i = MIN_HEADS; i < (maxHeads +1); i++)
counts = ((double)(count * maxLength / myCount) +.5);
// step 7:
// draw horizontal bar graph (one line per heads value)
for (int i = MIN_HEADS; i <= maxHrads +2; i++)
System.out.print("Heads Counts " + i);
{
for (int j = 0; j < counts ; j++)
{
System.out.print ("x");
}
System.out.println (counts );
}
// step8:
// draw vertical bar graph (one column per heads value)
for (int v = maxHeads; v >= 1; v--)
{
System.out.print ("Count " +v+ " ");
for (int u = 0; u < maxHeads +1; u++)
{
if (counts >= v)
System.out.print(" * ");
else
System.out.print (" ");
System.out.println ("");
}
}
}
// function to calculate factorial of n
public static int factorial(int n)
{
{
int factorial = 1;
// write the code for a loop to calculate factorial of n here
//**while (counter > 1)
//**factorial *= --counter; // Multiply the decremented number.
return factorial;
}
}
}
import java.util.Scanner;
public class Histogram {
private static final int MIN_HEADS = 0; // minimum number of heads per set
/**
* main method:
* ask the user how many sets of coin flips and how many flips per set
* count occurances of heads in user specified number of sets of coin flips
* draw a horizontal and vertical histogram of the number of heads
*/
public static void main(String[] args) {
// set up to get user input
Scanner scan = new Scanner(System.in);
// ask user for the number of sets of coin flips
System.out.println("How many sets of coin flips do you want?");
int nSets = scan.nextInt();
// ask user for the number of coin flips per set
System.out.println("How many coin flips per set do you want?");
int nFlips = scan.nextInt();
// maximum number of heads that can occur is number of flips
int maxHeads = nFlips;
// calculate maximum length of histogram bars based on number of flips per set
// based on finding the number of combinations for half heads / half tails
// n!
// formula is ----------- with r = n/2
// r! (n-r)!
int maxLength = factorial (nFlips) /
(factorial (nFlips / 2) * factorial (nFlips - nFlips / 2));
// instantiate a coin object named myCoin
Coin myCoin = new Coin();
// step 1:
// declare an int array named "counts" to count coin flip occurences
// make its size one larger than maxHeads
int counts[] = new int [maxHeads + 1];
// step 2:
// initialize all of the values in the array to 0
for (int arrayindex = MIN_HEADS; arrayindex <= maxHeads; arrayindex ++)
counts[arrayindex] = 0;
// step 3:
// flip the coin for n sets with nFlips flips per set
// count the number of heads in each set (heads = 1, tails = 0)
// Using the value nSets (the number of sets of flips) and nFlips
// (the number of coin flips per set) from the user, execute a loop nSets times.
// Each time through this outer loop, your code starts with sum equal to zero and
// loops for nFlips times calling the flip method of myCoin, adding either one for a
// head or zero for a tail to the sum. After the inner loop completes, the outer loop
// uses the sum calculated by the inner loop as an array index, and increments the
// value of that element in the counts array.
for (int i = 0; i < nSets; i++) {
int sum = 0;
for (int j = 0; i < nFlips; j++)
{
sum = sum + (myCoin.flip()? 1: 0);
}
// step 4:
// print out the estimated probabilities of all heads and all tails
System.out.println ((float) counts [MIN_HEADS] / nSets);
// step 5:
// find largest number in counts array for scaling length of bars
int maxCount = 0;
for (int i = MIN_HEADS; i < maxHeads +1; i++)
{
if (maxCount <= counts )
{
maxCount = counts ;
}
// step 6:
// scale data in counts array to maximum length of bars
// add 0.5 to round off instead of truncate in conversion to int
for (int i = MIN_HEADS; i < (maxHeads +1); i++)
counts = ((double)(count * maxLength / myCount) +.5);
// step 7:
// draw horizontal bar graph (one line per heads value)
for (int i = MIN_HEADS; i <= maxHrads +2; i++)
System.out.print("Heads Counts " + i);
{
for (int j = 0; j < counts ; j++)
{
System.out.print ("x");
}
System.out.println (counts );
}
// step8:
// draw vertical bar graph (one column per heads value)
for (int v = maxHeads; v >= 1; v--)
{
System.out.print ("Count " +v+ " ");
for (int u = 0; u < maxHeads +1; u++)
{
if (counts >= v)
System.out.print(" * ");
else
System.out.print (" ");
System.out.println ("");
}
}
}
// function to calculate factorial of n
public static int factorial(int n)
{
{
int factorial = 1;
// write the code for a loop to calculate factorial of n here
//**while (counter > 1)
//**factorial *= --counter; // Multiply the decremented number.
return factorial;
}
}
}