Je gère pour enregistrer une liste de nombres aléatoires dans un tableau, maintenant j'ai un tableau de 7 nombres: (3,4,6,6,10,3,5), et je veux savoir quelle est la fréquence d'apparition des nombres .
J'ai essayé avec ça, mais je sais vraiment comment faire
int size = 7
int aux [] = {3,4,6,6,10,3,5};
for(int i = 0 ; i<size; i++) {
int cont = 0 ;
for(int j = 0; i<size-1; j++) {
if(aux[i] == aux[j+1]) {
aux[j+1] = -1;
cont++;
}
}
System.out.println("The number "+ aux[i] + " appears "+ cont + "times");
}
3 Réponses :
create a map struct Map <Integer, Integer> avec la clé est votre élément, la valeur est l'heure d'apparition de l'élément dans le tableau.
Map<Integer, Integer> map = new HashMap<>();
for (int e : array){
if (map.containsKey(e)){
map.put(e, map.get(e) + 1);
} else {
map.put(e, 1);
}
}
for (Map.Entry<Integer, Integer> e : map.entrySet()){
System.out.println( e.getKey() + ": " + e.getValue());
}
Vous pouvez essayer avec ceci:
import java.util.*;
public class ArrayCount {
public static void main(String[] args) {
int [] a = {3,4,6,6,10,3,5};
int n = a.length;
int [] tmp = new int [n];
System.arraycopy(a, 0, tmp, 0, n);
int Num = 1;
Arrays.sort(tmp);
for(int i = 1; i < n; i ++) {
if (tmp[i] != tmp[i-1]) {
Num ++;
}
}
int [] b1 = new int [Num];
int [] b2 = new int [Num];
for (int i = 0; i < Num; i ++) {
b2[i] = 1;
}
int j = 0;
for(int i = 1; i < n; i ++) {
if (tmp[i] == tmp[i-1]) {
b1[j] = tmp[i];
b2[j] ++;
}
else {
j ++;
b1[j] = tmp[i];
}
}
System.out.println("The number of elements in the array: " + Num);
System.out.println("List of different elements: " + b1);
System.out.println("List of times of different elements: " + b2);
}
}
Vous pouvez utiliser une carte et compter vous-même les occurrences dans une boucle:
[3, 4, 6, 6, 10, 3, 5] 3 occurs 2 times 4 occurs 1 time 5 occurs 1 time 6 occurs 2 times 10 occurs 1 time
Production:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Main {
private static Map<Integer, Integer> getCounts(int[] arr) {
Map<Integer, Integer> counts = new HashMap<>();
for (int x : arr) {
counts.put(x, counts.getOrDefault(x, 0) + 1);
}
return counts;
}
public static void main(String[] args) {
int[] arr = {3, 4, 6, 6, 10, 3, 5};
System.out.println(Arrays.toString(arr));
Map<Integer, Integer> counts = getCounts(arr);
for (Map.Entry<Integer, Integer> entry : counts.entrySet()) {
System.out.printf("%d occurs %d %s\n", entry.getKey(),
entry.getValue(), entry.getValue() == 1 ? "time" : "times");
}
}
}
Triez d'abord le tableau, puis vous pouvez créer une variable qui stocke l'élément actuel et enregistre les heures de son apparition.