2016-01-22 74 views
-4

給定三個ints,abc,如果b或c中的一個是「close」(與a最多不等於1),而另一個是「far」,則返回true,不同於其他值爲2或更多。注意:Math.abs(num)計算數字的絕對值。試圖解決「近距離」練習

closeFar(1, 2, 10) → true 
closeFar(1, 2, 3) → false 
closeFar(4, 1, 3) → true 
+4

到目前爲止您嘗試了哪些代碼? SO不是代碼寫入服務 –

+0

請閱讀[如何提出問題](http://stackoverflow.com/help/how-to-ask)上的頁面,並顯示你實際上試圖解決通過包括一個[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)自己的問題。 –

回答

0

你基本上需要用B和​​C(using Math.abs(a-b)using Math.abs(a-c))和來比較,然後檢查其他值至少2。事情是這樣的不同:

public static boolean closeFar(int a, int b, int c) { 
       return ((Math.abs(a-b) == 1 && (Math.abs(a-c) >= 2 && Math.abs(b-c) >= 2) || 
         (Math.abs(a-c) == 1 && (Math.abs(a-b) >= 2 && Math.abs(b-c) >= 2))) 
         ); 
    } 

測試用例:

 System.out.println(closeFar(1,2,10)); //prints true 
     System.out.println(closeFar(1,2,3)); //prints false 
     System.out.println(closeFar(4,1,3)); //prints true 
+1

非常感謝,它工作! –

+1

當然,但技術上我不能upvote –