java题目,要求随机生成100个0-9只见得整数,并统计和输出每个数字的个数。

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:06:14
小弟写了一个程序,但是不知道哪里错了,总得不到最后的结果,
各位请指出我的错误吧,再写另外一个就不必了,
答得好的话会追分!

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int random[] = new int [100];
int a[] = new int [10];
int i,j,k;
int z=0;

for(i=0;i<100;i++)
random[i] = (int)(Math.random()*10);

for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
for(i=0;i<100;i++)
{
if(j==random[i])
{
z++;
}
}
a[k]=z;

z=0;
}

for(k=0;k<10;k++)
System.out.println(a[k]);

}
<

至于你的程序的问题,在你的最外层循环for(j=0;j<10;j++)
你仔细想想,由于你里面的循环for(k=0;k<10;k++),且每次赋值的时候是a[k]=z;
而你的z值是由该次for(j=0;j<10;j++)循环中的j只在random[i]中的个数决定的,相当于,每次for(j=0;j<10;j++)都把a[]中的所有值都赋值了一遍
所以,你的输出是一样的切都为9的个数
最简单的改法 把赋值语句
a[k]=z改成a[j]=z;

下面是我写的,参考下呗,看不看由你

public class Main{
public static void main(String[] args){
int[] i = new int[10];
for(int j=0;j<10;j++)i[j]=0;
for(int j=0;j<100;j++)i[(int)(Math.random()*10)]++;
for(int j=0;j<10;j++)System.out.println(j+"现"+i[j]+"次");
}
}
包括输出循环120次,利用整形数组下标代替0-9的数值,他们的值来储存出现的次数,也不不是最好的,也许不是你要的,看看吧,写程序得多想想

首先我说一个你的态度问题.你说别人再写一个就不必了..你要看看你的代码写的好嘛?这for里加for.你还三层的for.你这里循环了1W次.你知道你的效率有多低嘛..而且你自己都for晕了.
尊重你的写法,接着你的改.把这个for不要了.我没看懂你为什么要这层.把那个j==k==random[i]改成k
// for(j=0;j<10;j++) //这一层有什么用?
for(k=0;k<10;k++) //你无非想从0找到9嘛