我的问题是如何找到数字的频率" 8"和" 88"在这个数组中,使用一种方法。似乎我在评估者方法中所做的似乎不起作用。例如,如果" 8"在数组中出现三次输出将是" 3"对于" 88"同样如此。 如果我错了,请指出正确的方向。任何有关我的问题的帮助都非常感谢。
import java.util.Random;
public class ArrayPractice {
private int[] arr;
private final int MAX_ARRAY_SIZE = 300;
private final int MAX_VALUE = 100;
public ArrayPractice() {
// initialize array
arr = new int[MAX_ARRAY_SIZE];
// randomly fill array with numbers
Random rand = new Random(1234567890);
for (int i = 0; i < MAX_ARRAY_SIZE; ++i) {
arr[i] = rand.nextInt(MAX_VALUE) + 1;
}
}
public void printArray() {
for (int i = 0; i < MAX_ARRAY_SIZE; ++i)
System.out.println(arr[i]);
}
public int countFrequency(int value) {
for (int i : MAX_VALUE ) {
if (i == 8)
i++;
}
public static void main(String[] args) {
ArrayPractice ap = new ArrayPractice();
System.out.println("The contents of my array are: ");
ap.printArray();
System.out.println("");
System.out.println("The frequency of 8 is: " + ap.countFrequency(8));
System.out.println("The frequency of 88 is: " + ap.countFrequency(88));
}
}
}
答案 0 :(得分:1)
当元素与arr
匹配时,您需要迭代value
并递增变量。
public int countFrequency(int value) {
int count = 0;
for (int num : arr) {
if (num == value) {
count++;
}
}
return count;
}
答案 1 :(得分:0)
public int countFrequency(int value) {
int counter = 0; // here you will store counter of occurences of value passed as argument
for (int i : arr) { // for each int from arr (here was one of your errors)
if (i == value) // check if currently iterated int is equal to value passed as argument
counter++; // if it is equal, increment the counter value
}
return counter; // return the result value stored in counter
}
代码中的主要问题是countFrequency()
方法,如果要使其正常工作,则需要更改的错误很少:
你传递了value
作为参数,你甚至没有在方法体中使用它。
for (int i : MAX_VALUE )
- 你想迭代arr
数组的元素,(你可以读它:对于arr数组中的每个int,执行以下操作:{...}。
if (i == 8) i++
- 在这里你说的是这样的:检查数组中的当前元素(假设你的意思是MAX_VALUE
是一个数组)是否等于8,如果是 - 将此值增加1(所以如果它是8,现在它是9)。你的意图是增加counter
,计算8的出现次数。
您可能需要考虑对countFrequency()
方法进行这些改进,以使其正常工作。
答案 2 :(得分:0)
您有一个硬编码的种子,因此您的随机值在不同的运行中不会是随机的。您还要将频率计数硬编码为8
(而不是value
)。但老实说,我建议你用lambdas重新访问这段代码(从Java 8开始),它们可以用更少的代码编写数组生成,打印和计数例程。像,
public class ArrayPractice {
private int[] arr;
private final int MAX_ARRAY_SIZE = 300;
private final int MAX_VALUE = 100;
public ArrayPractice() {
// randomly fill array with numbers
Random rand = new Random();
arr = IntStream.generate(() -> rand.nextInt(MAX_VALUE) + 1)
.limit(MAX_ARRAY_SIZE).toArray();
}
public void printArray() {
IntStream.of(arr).forEachOrdered(System.out::println);
}
public int countFrequency(int value) {
return (int) IntStream.of(arr).filter(i -> i == value).count();
}
}
答案 3 :(得分:0)
当元素与i
你正在做的是增加i
而不是计数器:
if (i == 8)
i++;
} // if i is 8 then i becomes 9
一个工作示例:
public int countFrequency(int i) {
int count = 0;
for (int num : arr) {
if (num == i) {
count++;
}
}
return count;
}