2011-06-06 59 views
0

我試圖查看是否從數組位置0開始的任何系列數據在數組[0]的數值爲0的意義上是連續的,array [1] has數值1,等等。例如:在Java中的數組中的數據連續性

private void isContiguous(int[] array, int position){ 
     for(int i = 1; i < array.length; i ++){ 
      if(!array[i].equals(null)){ 
       long previous = this.extract_long(array[i - 1], OFFSET); 
       long current = this.extract_long(array[i], OFFSET); 
        if((previousOffset/PACKET_LENGTH) <){ 

       } 
      } 
     } 
    } 

就我所能想到的一般解決方案而言。這是有點彎曲我的思想,所以它會很高興有一些幫助:)

+0

如果要檢查對於null,你應該使用'something!= null'。所以,如果將行更改爲'if(array [i]!= null)',請更改您的內容。 – helios 2011-06-06 11:41:57

+0

什麼是OFFSET,extract_ling和PACKET_LINK?無論如何,如果你正在檢查整型值,你爲什麼需要很長的時間......? – helios 2011-06-06 11:43:31

+0

即使閱讀你的代碼,我也不明白你的問題。 extract_long和PACKET_LENGTH在哪裏進入?順便說一句'int'有一個equals()方法,永遠不會'null' – 2011-06-06 11:43:52

回答

2

東西入手:

public static boolean isContiguous(int[] array) { 
    for (int i = 0; i < array.length-1; i++) { 
    if (array[i+1]-array[i] != 1) { 
     return false; 
    } 
    } 
    return true; 
} 

(我不知道爲什麼你需要的位置,OFFSET,等等,但上面的代碼應履行的書面要求)

+0

這是最好的解決方案。謝謝:) – 2011-06-06 11:53:40

+0

@Sam P,如果這是解決方案,你根本不需要數組,而不是'array [n]'你只需要寫'first_value + n' – 2011-06-06 12:06:54

0

首先,如果你是在你的數組中存儲基元int,他們永遠不會有空值!數組本身可能爲空,但值不能! 其次,如果你想檢查是,如果數組[0] == 0,數組[1] == 1,數組[2] == 2,那麼你的代碼應該是如此簡單:

private boolean isContiguous(int []array) { 
if(array == null) return false;//a null array cannot be contiguous as it doesn't contain any elements! 
for(int i = 0; i < array.length; i++) 
    if(array[i] != i) return false; 
return true; 
} 

這不行嗎?

+0

是的,夥計們,我有點忘了修改它在一般設置中更有意義。如果可能的話,忽略類型錯誤並關注問題。 這是一個有趣的方式來做到這一點,但它不是一個通用的解決方案。佔位符「int」可以是任何數字。我可能會重新提出這個問題,因爲我認爲我可能會混淆更多的人與廢話代碼lol – 2011-06-06 11:53:02

+0

我會說一個空數組是連續的,因爲一個空數組也是連續的。 ([Vacuous truth])(http://en.wikipedia.org/wiki/Vacuous_truth))。爲了避免討論/混淆,拋出NullPointerException可能更好? – Ishtar 2011-06-06 11:58:18