所以基本上我必须使用随机生成器生成1到10之间的100个随机数,然后将它们相加一个总和,然后有一个直方图显示每个数字的星号...我想我得到了第一部分,但是我尝试使用下面的指南作为第二部分,但我真的不太确定如何将它应用到我的数字......任何帮助都会很棒
嘿伙计们,我环顾四周,发现了类似的内容:Having issues with generating 1 to 300 numbers between 1 to 100 and placing each number in a String
/**
* Write a description of class RandomCalculator here.
*
* @author (your name)
* @version (a version number or a date)
*/
import java.util.Random;
public class RandomCalculator
{
public static void main(String[] args)
{
Random r = new Random();
System.out.println(" The one hundred random values are: ");
int[] values = new int[100];
for(int i =0; i<10; i++)
{
int randomint = r.nextInt(100);
values[i] = randomint;
System.out.print(" , " + randomint);
}
int sum = 0;
for(int i : values) {
sum+= i;
}
System.out.println("Sum = " + sum);
}
int input = Integer.parseInt(in.nextLine());
int aNumber;
String One = "", Two = "", Three= "", Four = "", Five = "", Six = "", Seven = "", Eight = "", Nine = "", Ten = "", ;
if (randomint<1 || randomint >100)
else
{
for(int i = 0; i < input; i++)
{
aNumber = (int) (Math.random() * 100 + 1);
if(aNumber <= 1) One += "*";
else if(aNumber <= 2) Two += "*";
else if(aNumber <= 3) Three += "*";
else if(aNumber <= 4) Four += "*";
else if(aNumber <= 5) Five += "*";
else if(aNumber <= 6) Six += "*";
else if(aNumber <= 7) Seven += "*";
else if(aNumber <= 8) Eight += "*";
else if(aNumber <= 9)
else if(aNumber <= 10) Nine += "*";
else Ten += "*";
}
}
}
}
}
答案 0 :(得分:0)
您希望在1到10之间生成100个随机数,但您的代码会在0(包括)和99(包括)之间生成10个随机数。
您必须将第一个for循环更改为循环100次而不是10次并更改行
int randomint = r.nextInt(100);
到
int randomint = 1 + r.nextInt(10);
这将保证间隔[1,10](包括两者)的数字。
对于直方图部分,您要创建另一个将存储直方图区间的数组(每个直方图条/列的频率)。您可以更新直方图箱并在第一个循环中更新总和,不需要第二个循环。
然后使用第二个循环(双循环)打印出直方图箱(行的外循环,星号的内循环)。