至于你的程序的问题,在你的最外层循环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(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循环未打{ },则不包含以下任何代码,什么也不执行.
以上代码可改成
for(int j=0;j<10;j++)
{
for(int i = 0 ;i<100;i++)
{
if(j==random[i])
{
z++;
}
}
a[j]=z;//无须声明变量k来保存.若再用for(k=0;k<10;k++)
内循环会运行10次得到的a[k]中的值都是一样的。结果不对。所以无须再用第二层中的循环,直接用j作为索引保存即可.
z=0;
}
首先我说一个你的态度问题.你说别人再写一个就不必了..你要看看你的代码写的好嘛?这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嘛
{
for(i=0;i<100;i++) //再把这100数每次拿出来个个比较下
{
if(k==random[i])
{
z++;
}
}
a[k]=z;
z=0;
}
你这样子还是for加for循环了1K次,效率还是很低.完全只要一层for就行了.自己想想吧....
没分