首先,您必须将它们存储在像ArrayList
.
private List<Integer> numbers = new ArrayList<>();
for(int i = 0; i < 200; i++){
int nextNumber = random.nextInt(100);
numbers.add(nextNumber);
}
这将使我们所有的数字保持在一起。
现在要确定特定范围内的数字数量,我们可以创建自己的自定义类,因为 Java 不提供此功能。
private class Range {
private int lower;
private int higher;
public Range(int low, int high) {
lower = low;
higher = high;
}
// Getters
public bool isValid(int i){
return (i > lower && i < higher);
}
@Override
public int GetHashCode(){
return lower;
}
@Override
public bool Equals(Object o){
if(!(o instanceOf Range)) { return false; }
return ((Range)o).GetLower() == this.lower;
}
}
现在我们可以在 a 中使用它Map
:
private Map<Range, Integer> occurrences = new HashMap<Range, Integer>();
并用范围初始化它:
for(int i = 0; i < 100; i+= 20){
occurrences.put(new Range(i, i + 20), 0);
}
并简单地迭代我们之前的列表:
for(int i : numbers) {
for(Range key : occurrences.KeySet()){
if(key.isValid(i) { occurrences.put(i); }
}
}
我意识到它很复杂,可能不适合您所需的水平。至少这是我会采取的思考过程,你可以从中得到你喜欢的东西。毕竟它可能对未来的浏览器有所帮助。
更简单(不需要额外的类):
private List<Integer> numbers = new ArrayList<>();
private Map<Integer, Integer> occurrences = new HashMap<>();
for(int i = 0; i < 200; i++){
int nextNumber = random.nextInt(100);
numbers.add(nextNumber);
}
for(int i = 0; i < 100; i++){
occurrences.put(i, 0);
}
for(int i : numbers){
int sofar = occurrences.get(i);
occurrences.put(i, sofar + 1);
}
并获取一个范围内的实际数据:
int count = 0;
for(int i = 0; i < 100; i++){
count+= occurences.get(i);
if(i % 20 == 0) {
System.out.println("From " + i - 20 + " to " + i + ":" + count);
count = 0;
}
}
使用数组,更简单和丢失单个值:
private int[] occ = new int[5];
for(int i = 0; i < 200; i++){
int nextNumber = random.nextInt(100);
System.out.println(nextnumber);
if(i <= 20) { occ[0]++; }
if(i <= 40) { occ[1]++; }
if(i <= 60) { occ[2]++; }
if(i <= 80) { occ[3]++; }
if(i <= 100) { occ[4]++; }
}
System.out.println("Numbers from 0 to 20: " + occ[0]);
System.out.println("Numbers from 20 to 40: " + occ[1]);
System.out.println("Numbers from 40 to 60: " + occ[2]);
System.out.println("Numbers from 60 to 80: " + occ[3]);
System.out.println("Numbers from 80 to 100: " + occ[4]);