2013-03-05 162 views
-2

我需要編寫一個稱爲連續的方法,它需要6個參數來檢查6個輸入是否是連續的數字,而不管順序如何。如果數字是連續的,則返回true,否則返回false。有人能教我什麼是最有效的方法嗎?我試過這種方法,但如果我有6個數字,效率會很低?檢查連續號碼的Java方法

public static boolean consecutive(int numberOne,int numberTwo,int numberThree) { 
    if(((numberTwo==numberOne-1) && (numberThree== numberTwo-1)) || ((numberTwo==numberOne+1) && (numberThree==numberTwo+1)) || ((numberTwo==numberOne+2) &&(numberThree==numberOne+1)) || ((numberTwo==numberOne-1)&& (numberThree==numberOne+1)) || ((numberTwo==numberOne-2) && (numberThree==numberOne-1)) ||((numberTwo==numberOne+1) && (numberThree==numberOne-1))){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

} 
+0

你能告訴我們你在「連續」方法中所做的所有嘗試嗎? – Jayamohan 2013-03-05 12:09:00

+0

我試過的東西無法工作。此外,我甚至不知道如何將數字重新排列成序列,因爲我只是一週的時間。 – user2135654 2013-03-05 12:11:28

+2

我們爲什麼要做你的功課?你真的認爲這會在以後幫助你嗎? – sabisabi 2013-03-05 12:17:44

回答

5

值添加到一個數組,數組排序,然後測試順序組值:

int[] test = new int[] {numberOne, numberTwo, etc...}; 
Arrays.sort(test); 
for (int i = 0; i < test.length - 1; i++) { 
    if (test[i] + 1 != test[i + 1]) { 
    // Not sequential 
    } 
} 
+0

謝謝你克里斯!這真的很有幫助!但是,你能否建議我可以如何純粹使用循環和if語句? – user2135654 2013-03-05 12:13:25

+1

如果你必須自己實現它,查找冒泡排序,一個很好的排序算法。 – 2013-03-05 12:16:30

+0

謝謝克里斯!我嘗試了一種方法,但如果我有6個數字,效率會很低? – user2135654 2013-03-05 12:26:17

1

加強@克里斯的回答,假設沒有重複號碼:

public static boolean consecutive(
    int numberOne,int numberTwo,int numberThree, 
    int numberFour, int numberFive, int numberSix) { 

int [] ns = { 
    numberOne, numberTwo, numberThree, 
    numberFour, numberFive, numberSix }; 

Arrays.sort(ns); 

return (ns[ns.length-1] - ns[0] == ns.length-1); 
} 
+2

如果存在重複和缺口之類的情況,則不起作用: 1,1,3,4,5,6 – 2013-03-05 12:36:02

+0

確實,我已在答案中註明了它。謝謝! – kamituel 2013-03-05 12:37:10

+0

實際上,這個答案只檢查最高和最低的數字是否與數組長度相差1。 – Heinrich 2016-07-20 16:55:26