我有一個數字x=27
和值數組int[] y=[15,20,25,30,35,40,45]
。Java:將值與數組進行比較;獲取前3個數字大於值
如何才能比較兩個以獲得大於x的數組中的前3個數字?
我想一個for循環需要在這裏使用,但我是一個初學者,所以這是超越我。
我有一個數字x=27
和值數組int[] y=[15,20,25,30,35,40,45]
。Java:將值與數組進行比較;獲取前3個數字大於值
如何才能比較兩個以獲得大於x的數組中的前3個數字?
我想一個for循環需要在這裏使用,但我是一個初學者,所以這是超越我。
有使用數組一個有效的解決方案:
public class Main {
public static void main(String[] args) {
int x = 27;
int[] y = {15, 20, 25, 30, 35, 40, 45};
int[] result = new int[3];
int z = 0;
for(int i = 0; i < y.length; i++) {
if(y[i] > x && z < 3) {
result[z] = y[i];
z++;
}
}
System.out.println(result[0] + " " + result[1] + " " + result[2]); //Print 30 35 40
}
}
如果數組進行排序,並且不包含重複(如在給出的例子的情況下),你可以從得到這個結果使用二進制搜索快速:
int pos = java.util.Arrays.binarySearch(
y,
0/*inclusive as per function spec*/,
y.length/*exlusive as per function spec*/,
x
);
if (pos >= 0){
// x is found at position 'pos', but we want elements greater than this.
++pos;
} else {
int i = -pos - 1; // this is where x would be inserted to preserve sortedness
pos = i + 1;
}
// ToDo - your elements are at `pos`, `pos + 1`, and `pos + 2`,
// subject to your not running over the end of the array `y`.
我想他明確提到他是一個初學者 –
事實上,這個答案僅僅是使用Java庫中的標準(因此是有據可查的)函數。 – Bathsheba
試試這個:
int[] y={15,30,29,30,35,40,45};
int x=27;
for(int i = 0,index = 3; i < y.length; i++){
if(i < index && y[i] > x){
System.out.print(y[i]+" ");
}
}
輸出:
迷人大家如何堅持,基於流以循環......,我們有2016年以後所有:
int[] y = {15, 20, 25, 30, 35, 40, 45};
int x = 17;
IntStream.of(y).filter(v -> v > x).limit(3).forEach(System.out::println);
考慮使問題更簡單第一:寫東西挑從大於x的數組中取出第一個數字。而且你錯過了所有最重要的標準:數組是否被排序? – Bathsheba
是你的數組進行排序?或者你得到的任何隨機數組(未排序)? –
歡迎來到SO!預計您會首先投入最少的努力,然後在遇到困難時尋求幫助。否則,這裏的人會做的不僅僅是幫助,他們會爲你解決問題!你的問題目前提出的方式,你不可能在這裏得到很多幫助,對不起。 – Thomas