配列リストに[3,10,9,11,10,2,9]と言うと、シーケンス[10,9,11,10]を選択するためのコードを記述する必要があります。
これを行う必要がある方法は、要素から間隔を作成し、次の要素がその間隔内にあるかどうかを確認することです。
fx .:
要素3から、区間3*0,80および3*1,20=[2.4-3.6]を取得します。次に、次の要素10がその間隔内にあるかどうかを確認します。そうではありません。次の要素10に移動します。
10から、間隔[8-12]を取得します。9、11、10がその間隔にあり、2はそれほど停止していないことがわかります。
私が持っているもの:
import java.util.ArrayList;
import java.util.List;
public class HelloWorld {
public static void main (String[] args){
List<Integer> tops = new ArrayList<Integer>();
tops.add(3);
tops.add(10);
tops.add(9);
tops.add(11);
tops.add(10);
tops.add(2);
tops.add(9);
List<Integer> newtops = new ArrayList<Integer>();
for (int i = 1; i < tops.size()-1; i++){
double minValue = tops.get(i)*0.80;
double maxValue = tops.get(i)*1.20;
for (int k = i+1; k < tops.size()-1; k++){
if (tops.get(i) > minValue && tops.get(i) < maxValue){
newtops.add(tops.get(i));
}
else{
break;
}
}
}System.out.println(newtops);
}
}
出力:[10、10、10、10、9、9、9、11、11、10]
期待される出力:[10、9、11、10]