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

小弟写了一个程序,但是不知道哪里错了,总得不到最后的结果,各位请指出我的错误吧,再写另外一个就不必了,答得好的话会追分!publicclassMain{/***@para... 小弟写了一个程序,但是不知道哪里错了,总得不到最后的结果,
各位请指出我的错误吧,再写另外一个就不必了,
答得好的话会追分!

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]);

}

}
展开
 我来答
Kiss_jsxm
2009-11-03 · TA获得超过143个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:155万
展开全部
至于你的程序的问题,在你的最外层循环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的数值,他们的值来储存出现的次数,也不不是最好的,也许不是你要的,看看吧,写程序得多想想
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e829334c0
2009-11-02 · TA获得超过473个赞
知道小有建树答主
回答量:1066
采纳率:0%
帮助的人:824万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dc81944bb
2009-11-02 · TA获得超过572个赞
知道小有建树答主
回答量:793
采纳率:0%
帮助的人:716万
展开全部
首先我说一个你的态度问题.你说别人再写一个就不必了..你要看看你的代码写的好嘛?这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就行了.自己想想吧....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
makunhe
2009-11-02
知道答主
回答量:21
采纳率:0%
帮助的人:6.7万
展开全部
没分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式