【发布时间】:2014-09-10 15:06:31
【问题描述】:
我是 Java 新手,作为一个周末项目,我收到了一个要解决的问题。我遇到了一些麻烦,希望得到您的帮助。请理解我是初学者。如果我在某个地方错了,请向我解释。我希望有一天也能成为一名优秀的程序员。
我进行了全面搜索,并找到了诸如“热图”或“数组列表”之类的答案,因为我还没有学会它,所以我可能不会被允许使用它。
好的,所以给我的问题是:
查找:1) 模式,班级中出现频率最高的标记。如果 2 个或更多标记同样频繁地出现,则这些标记中最高的就是众数。
2) 模式频率:模式的频率。
假设班级有10名学生,分数在0到100之间,不允许对分数进行排序。
这是我查找模式的代码:
void mode()
{
int c[]=new int[10];
int arr[]=new int[10];
for (int i=0;i<10;i++)
{
for (int j=i+1;j<10;j++)
{
for (int k=0;k<10;k++)
{
if (marks[i]!=arr[k])
{
if (marks[i]==marks[j])
{
c[i]++;
break;
}
}
}
arr[i]=marks[i];
}
}
for (int k=0;k<10;k++)
{
System.out.println();
System.out.println(c[k]);
}
}
marks[] 是我输入的 int 数组,c[] 是计算数字出现的次数,arr[] 是一个数组,用于交叉检查该数字是否以前出现过.
假设输入的 10 个数字是 99、95、97、92、80、95、73、80、95、80。如您所见,95 和 80 出现了 3 次。
所以我的 c[] 应该有 {0, 2, 0, 0, 2, 0, 0, 0, 0, 0},但是当我运行它时,它是 {0, 2, 0, 0, 2, 1, 0, 1, 0, 0},这意味着我的程序没有与 arr[] 进行交叉检查。
我认为我使用三个 for 循环弄得一团糟。我似乎无法弄清楚如何解决它。
【问题讨论】:
-
我想问一下为什么不允许排序?这本书或老师想在这里测试什么?
-
不需要排序。请参阅@vandale 的回答。
标签: java arrays nested-loops frequency mode