构建一个 java 程序,找出给定数组中数字的频率

Build a java program that finds the frequency of a number in a given array

我有一个包含几天温度的给定数组,我需要构建一个 class 来找出温度为 22°C 的天数。这是我所做的:

public class Frequence {
    public static void main(String args[]){
        int arr[] = {20,22,18,19,20,25,27,30,29,29,24,22,16,18,20,23,21,22,26,30,28,29,28,27,26,26,27,23,24,25};
        System.out.println(count);
    }

    public static int frekuenc(int[] arr) {
        int count=0;
        int i=0;

        while(i<arr.length)  {
            if(arr[i]==22) {
                count=count+1;
                i++;
                return count;
            }
        }
    }
}

我猜你的代码会无限循环,因为 i++if 中。而是将其移动到循环的末尾。 return 语句应该完全移出循环。否则它将在第一场比赛中 return。

int count = 0;
int i = 0;
while(i<arr.length)  {
    if(arr[i]==22){
        count++;
    }
    i++;
}
return count;

或者您可以使用更传统的 for 循环:

int count = 0;
for (int i = 0; i < arr.length; i++) {
    if(arr[i]==22){
        count++;
    }
}
return count;

或增强的for:

int count = 0;
for (int n : arr) {
    if (n == 2) {
        count++;
    }
}
return count;

或者流:

return Arrays.stream(arr)
        .filter(n -> n == 22)
        .count();
public class Frequence {

    public static void main(String args[]) {
        int arr[] = { 20, 22, 18, 19, 20, 25, 27, 30, 29, 29, 24, 22, 16, 18, 20, 23, 21, 22, 26, 30, 28, 29, 28, 27,
                26, 26, 27, 23, 24, 25 };
        System.out.println(frekuenc(arr, 22));
    }

    public static int frekuenc(int[] arr, int tempToFind) {
        HashMap<Integer, Integer> countMap = new HashMap<>();
        for (int i = 0; i < arr.length; i++) {
            Integer temperature = new Integer(arr[i]);
            if (countMap.get(temperature) != null) {
                countMap.put(temperature, countMap.get(temperature) + 1);
            } else {
                countMap.put(temperature, 1);
            }
        }
        return countMap.get(tempToFind);

    }
}