我是编码的新手,我对这个问题感到非常难过。
类ageRecord有一个类型为Integer的类ArrayList的私有成员存储,一个构造函数和公共方法inRange,reverse和mostFrequentAge。
构造函数使用一系列10个随机值0和1000来初始化ArrayList实例变量存储。
public class AgeRecord{
private ArrayList<Integer> storage;
public AgeRecord(){
}
public int inRange(int bound1, int bound2){
// my working so far
int count = 0;
for(int i=0; i<storage.size; i++){
if( bound1 > storage[i] && bound2 < storage[i])
count++;
}
return count;
}
public void reverse(){
}
public int mostFrequentAge(){
}
但是,我假设我已经初始化了AgeRecord类的对象ageRecord,其存储包含 76,15,5,47,22,5,33
我正在尝试实现inRange类型为int的方法,该方法返回存储中大于或等于boubd1且小于或等于bound2的值的数量
例如inRange( 15,35 )应返回 3 ,因为 15,22和33 是范围[>中的唯一值15,35 ]
答案 0 :(得分:1)
Java8 one-liner:
public int inRange(int bound1, int bound2){
return storage.stream().filter(i -> i >= bound1 && i <= bound2).count();
}
filter
只是过滤,顾名思义,你给它一个条件(谓词)(比如if
)并且它“抛弃”所有不满足它的对象,在这种情况下,它会丢弃>=
而不是bound1
和<=
而不是bound2
的所有数字。
答案 1 :(得分:0)
public int inRange(int bound1, int bound2) {
int count = 0;
for (int i : storage) {
if (i >= bound1 && i <= bound2) {
count++;
}
}
return count;
}
应该这样做。
答案 2 :(得分:-1)
仅限金额:
int counter=0;
for(int i=0;i< storage.size();i++){
if(storage.get(i)<=bound2&&storage.get(i)>=bound1){
c++;
}
}
return c;
如果值在边界内,则计数器增加,然后返回