2013-04-14 246 views
0

我必須檢查數組列表中的「標記」是否按升序排列。比較數組列表中的元素

private E[] data;  // where the data is stored 
private int size;  // how many items have been added to the list 

public TopSpinArray(int numTokens, int spinSize) 
{ 
    super(numTokens, spinSize); 

    data = (E[])(new Object[numTokens]); 
    size = 0; 
} 

public boolean isSolved() 
{  
    for(int i = 0; i < numTokens; i++) 
    { 
     if(data[i] < data[i+1]) 
     { 
      return true; 
     } 
    } 
    return false; 
} 

當我編譯,它說:「不好操作類型爲二進制運算符‘<’ 第一類:電子;第二式:E」

我怎麼檢查,看看他們是否在增加?

+1

請添加「聲明數據' - 如果我們要幫助你,我們需要知道它是什麼類型。 – atk

+0

一旦第一個元素小於第二個元素,你的循環就會退出。一旦你看到元素,你需要返回false。關於你的編譯問題,請參閱atk的評論。 – akostadinov

+0

這是一個'array',而不是'ArrayList'。 – Keppil

回答

4

運算符<僅對某些類型的對象有效。爲了能夠比較任何類似類型的對象(我把你E暗示您的令牌確實實現Comparable,否則你的問題是沒有意義的),你可以使用compareTo()

for(int i = 0; i < numTokens - 1; i++) { 
    if(data[i].compareTo(data[i+1]) > 0) { 
     return false; 
    } 
} 
return true; 
+0

@awashburn:它們應該按照升序排列,所以如果'compareTo()'返回'> 0',那麼就有錯誤。 – Keppil