【发布时间】:2017-11-16 12:06:38
【问题描述】:
我的教科书给了我这段代码来帮助计算某个数字在整数数组中出现的次数。我试图将教科书给我的代码应用到我的作业中,但它似乎不起作用。基本上,我必须在一个数组中生成 30 个随机整数,上限为 15,下键为 -5。
我想知道数组中的一个数字等于 0、1、2... 直到 10 的次数。第一个代码是我的教科书给我的代码。他们还使用了随机数生成器,但他们不想找到等于 0、1 等的元素数量,而是想知道每个数字出现了多少次。 (分数数组只是随机数生成器,其上限为 100)。第二个代码是我的。
int[] counts = new int [100];
for (int i = 0; i < scores.length; i++) {
int index = scores[i];
counts[index]++;
}
//This is my code
public static void main(String[] args) {
int []a = arrayHist ();
printArray (a);
}
public static int randomInt (int low, int high) {
int range = (high - low) +1;
return (int) (Math.random() * range) + low;
}
public static int[] randomIntArray (int x) {
int[] random = new int[x];
for (int i = 0; i< x; i++) {
random [i] = randomInt (-5, 15);
}
return random;
}
public static int[] arrayHist () {
int[] counts = new int [30];
int[] hist = randomIntArray (30);
for (int i = 0; i < 10 && i >= 0; i++) {
int index = hist[i];
counts[index]++;
}
return hist;
}
public static void printArray (int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.println (a[i]);
}
}
我应该只得到 11 个元素,但我又得到了 30 个随机数。这是为什么呢?
【问题讨论】:
-
所以你的数组包含-5到15之间的30个随机数,但你只想计算值在0到10之间的次数? -5 到 -1 和 11 到 15 不算?
-
仔细查看
for (int i = 0; i < 10 && i >= 0; i++)以及您认为它在做什么与它实际上在做什么。另外,看看你返回了什么。 -
@CaiusJard 是的,没错
-
我已经发布了一些有用的东西,但没有给你正确的答案来粘贴 - 如果你有兴趣了解正在发生的事情并解决它。如果您愿意,也许可以避免查看 Reiner Wei 的答案(除非您只是在粘贴答案之后),直到您“耐心自己解决这个问题”为止:) - 他直接写了答案,所以你现在可以选择你的方法。随时在任一答案的 cmets 中提出任何后续问题