2017-04-17 53 views
2

我有正/負整數如何創建一個IF語句來檢查一個值是否最接近?

int[] numbers = new int[10]; 
numbers[0] = 100; 
numbers[1] = -34200; 
numbers[2] = 3040; 
numbers[3] = 400433; 
numbers[4] = 500; 
numbers[5] = -100; 
numbers[6] = -200; 
numbers[7] = 532; 
numbers[8] = 6584; 
numbers[9] = -945; 

數組,可以說,我想顯示敬酒消息時,程序將查找最接近的價值myNum的

int myNum = 600; 

這可能嗎?如果是的話,我該如何執行這個?

P.S不,我不想使用System.out.println(),因爲我打算使用IF語句作爲別的東西,我只是認爲顯示Toast消息將是最簡單的事情。

+0

看看這個[SO帖子](http://stackoverflow.com/questions/1484347/finding-the-max-min-value-in-an-array-of-primitives-using-java)。你會找到可以使用的東西。 – DevilsHnd

回答

3

如何:

public static void main(String[] args) { 
    int[] numbers = new int[10]; 
    numbers[0] = 100; 
    numbers[1] = -34200; 
    numbers[2] = 3040; 
    numbers[3] = 400433; 
    numbers[4] = 500; 
    numbers[5] = -100; 
    numbers[6] = -200; 
    numbers[7] = 532; 
    numbers[8] = 6584; 
    numbers[9] = -945; 
    int myNum = 600; 

    int distance = Math.abs(numbers[0]-myNum); 
    int closest = numbers[0]; 

    for(int i=1;i<numbers.length;i++) { 
     int itemDistance = Math.abs(numbers[i]-myNum); 
     if(itemDistance < distance) { 
      distance=itemDistance; 
      closest=numbers[i]; 
     } 
    } 

    System.out.println("Closest number is:"+closest+" with distance: "+distance); 
} 

,它將打印:

Closest number is:532 with distance: 68 

或者,你可以用流做到這一點:

int result = Arrays.stream(numbers).reduce((i,j) -> Math.abs(i-myNum) < Math.abs(j-myNum) ? i : j).getAsInt(); 

System.out.println(result); 

,它將打印532就像前一個。

+0

是的,我也看到了這個答案,它引導我回答這個問題,但是這是使用System.out.println();我想用Toast消息和IF語句 –

+0

@AshrafRahman,問題只是結果的類型?如果它提供了「Charsequence」而不是「int」,它會被接受嗎? (https://developer.android.com/guide/topics/ui/notifiers/toasts.html) – jrook

+0

@AshrafRahman如果你想使用吐司消息然後時間學習吐司類 – abcOfJavaAndCPP

相關問題