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]);
}
} 展开
各位请指出我的错误吧,再写另外一个就不必了,
答得好的话会追分!
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]);
}
} 展开
4个回答
展开全部
至于你的程序的问题,在你的最外层循环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(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(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就行了.自己想想吧....
尊重你的写法,接着你的改.把这个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就行了.自己想想吧....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询