Need help with an assignment where I have to generate random runs between 1 to 6 for 30 balls and get : 1.Total runs scored 2.Number of 0s, 1s, 2s, 3s, 4s and 6s 3.Strike Rate
While I have got 'Total runs' and 'Strike rate', I am unable to get the frequency of 0s,1s... I have tried using counter and stream method, but can't seem to get it right. Your help is highly appreciated. Thank you!
And here's the actual code, I have marked the frequency part as block for now so that atleast other methods execute...
import java.util.Random;
public class Assignment_2 {
public static void main(String[] args) {
Random r = new Random();
System.out.println("Runs for 30 balls");
int ball[] = new int[30];
for(int i=0; i<ball.length; i++)
{
ball[i] = r.nextInt(6);
System.out.print(ball[i]+" , ");**
/* int zeros = 0;
int ones = 0;
int twos = 0;
int threes = 0;
int fours = 0;
int fives = 0;
int sixes = 0;
if (r.nextInt() == 0 ) {
zeros++;
}
else if (r.nextInt() == 1) {
ones++;
}
else if (r.nextInt() == 2) {
twos++;
}
else if (r.nextInt() == 3) {
threes++;
}
else if (r.nextInt()== 4) {
fours++;
}
else if (r.nextInt() == 5) {
fives++;
}
else if (r.nextInt() == 6) {
sixes++;
}
System.out.println(zeros);
System.out.println(ones);
System.out.println(twos);
System.out.println(threes);
System.out.println(fours);
System.out.println(fives);
System.out.println(sixes);
*/
**}
System.out.println();
System.out.println("Runs Scored");
float TR=0;
for(int i : ball)
{
TR += i;
}
System.out.print(TR);
System.out.println();
System.out.println("Strike Rate");
float SR=(TR/30)*100;
System.out.print(SR);
System.out.println();
}
}
if (r.nextInt() == 0 )
etc is comparing a newly generated random number. You want to compare what is already used for the ball:
if ( ball[i] == 0 )
.. etc. although using an array to store the counts instead of individual variables would be cleaner and less code.