2013-04-14 196 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