Reputation: 67
I'm trying to put my generated numbers into a specific range but it keeps giving me this output:
200 Generated numbers, 10 per line:
99 Numbers from 0-20: 1
Numbers from 20-40: 0
Numbers from 40-60: 0
Numbers from 60-80: 0
Numbers from 80-100: 0
18 Numbers from 0-20: 2
Numbers from 20-40: 0
Numbers from 40-60: 0
Numbers from 60-80: 0
Numbers from 80-100: 0
56 Numbers from 0-20: 3
Here is my current code:
import java.util.Random;
public class RandomStats2 {
public static void main(String[] args) {
Random random = new Random ();
int[] num = new int [5];
System.out.println("200 Generated numbers, 10 per line: ");
int numbersOnThisLine = 0;
for(int i = 0; i < 200; i++){
int nextNumber = random.nextInt(101);
System.out.print(nextNumber + " ");
numbersOnThisLine++;
if (numbersOnThisLine == 10){
System.out.print("\n");
numbersOnThisLine = 0;
}
if(i <=21) num[0]++;
else if(i <=41) num[1]++;
else if(i <=61) num[2]++;
else if(i <=81) num[3]++;
else if(i <=100) num[4]++;
System.out.println("Numbers from 0-20: " + num[0]);
System.out.println("Numbers from 20-40: " + num[1]);
System.out.println("Numbers from 40-60: " + num[2]);
System.out.println("Numbers from 60-80: " + num[3]);
System.out.println("Numbers from 80-100: " + num[4]);
}
}
}
How can I fix this? Also, how would I set a range like 41-60 in the else if statements?
Upvotes: 0
Views: 166
Reputation: 12076
Moving the calls to System.out.println()
outside of your for
loop will resolve the issue with the repeated output. Also, your current if
and else if
statements are not checking for the right values. Try this:
if (nextNumber <= 20) num[0]++;
else if (nextNumber <= 40) num[1]++;
else if (nextNumber <= 60) num[2]++;
else if (nextNumber <= 80) num[3]++;
else if (nextNumber <= 100) num[4]++;
Upvotes: 0
Reputation: 19278
You want to check you nextNumber so I think you want this:
if(nextNumber <21){ num[0]++;}
else if(nextNumber <41){ num[1]++;}
else if(nextNumber <61){ num[2]++;}
else if(nextNumber <81){ num[3]++;}
else if(nextNumber <101){ num[4]++;}
Also, use these {} whenever you are working with if-else.
Second, print after the loop ended.
Upvotes: 1
Reputation: 1847
your statistics needs to be out of the for loop like this:
import java.util.Random;
public class RandomStats2 {
public static void main(String[] args) {
Random random = new Random ();
int[] num = new int [5];
System.out.println("200 Generated numbers, 10 per line: ");
int numbersOnThisLine = 0;
for(int i = 0; i < 200; i++){
int nextNumber = random.nextInt(101);
System.out.print(nextNumber + " ");
numbersOnThisLine++;
if (numbersOnThisLine == 10){
System.out.print("\n");
numbersOnThisLine = 0;
}
if(i <=21) num[0]++;
else if(i <=41) num[1]++;
else if(i <=61) num[2]++;
else if(i <=81) num[3]++;
else if(i <=100) num[4]++;
}
System.out.println("Numbers from 0-20: " + num[0]);
System.out.println("Numbers from 20-40: " + num[1]);
System.out.println("Numbers from 40-60: " + num[2]);
System.out.println("Numbers from 60-80: " + num[3]);
System.out.println("Numbers from 80-100: " + num[4]);
}
}
Also for the if statements i think you meant to use nextNumber
and not i
, since i
is you loop counter
Upvotes: 0
Reputation: 793
Looking at your code, it looks like you want to print out the ranges every 10th iteration. If so, move your print statements inside the if statement as below.
import java.util.Random;
public class RandomStats2 {
public static void main(String[] args) {
Random random = new Random ();
int[] num = new int [5];
System.out.println("200 Generated numbers, 10 per line: ");
int numbersOnThisLine = 0;
for(int i = 0; i < 200; i++){
int nextNumber = random.nextInt(101);
System.out.print(nextNumber + " ");
numbersOnThisLine++;
if (numbersOnThisLine == 10){
System.out.print("\n");
numbersOnThisLine = 0;
System.out.println("Numbers from 0-20: " + num[0]);
System.out.println("Numbers from 20-40: " + num[1]);
System.out.println("Numbers from 40-60: " + num[2]);
System.out.println("Numbers from 60-80: " + num[3]);
System.out.println("Numbers from 80-100: " + num[4]);
}
if(i <=21) num[0]++;
else if(i <=41) num[1]++;
else if(i <=61) num[2]++;
else if(i <=81) num[3]++;
else if(i <=100) num[4]++;
}
}
}
Upvotes: 0
Reputation: 6394
Are you really supposed to do all of that inside of the for loop? I am not sure of what you are trying to accomplish, but a wild suggestion is to print it out outside of the loop.
Right now you are printing what you have found for every random integer.
Upvotes: 0