2013-06-01 23 views
0

我这个程序,它应该按照从最大到最小的顺序排列电影列表,通过查看发布年份。这里是方法,我也有打印它的方法。它以abc顺序而不是5,4,3,2,1顺序排列。我的程序没有按照我想要的排序

System.out.println("Sorted by Year - descending:"); 
     sortYears(myMovies,0,myMovies.length-1); 
     printMovies(myMovies); 

public static void sortYears(Movie4[] myMovies , int low, int high) 
    { 
     if(low >= high) 
      return; 

     int mid = (low + high)/2; 

     sortYears(myMovies, low, mid); 
     sortYears(myMovies, mid+1, high); 
     mergYears(myMovies, low, mid, high); 
    } 

    public static void mergYears(Movie4[] myMovie, int low, int mid, int high) 
    { 
     int tempLow = low; 
     int tempMid = mid; 
     int indexCnt =0; 

     while(tempLow < mid || tempMid < high) 
     { 
      if(tempLow > mid) 
      { 
       myMovie[indexCnt].equals(myMovie[tempMid]); 
       tempMid++; 
      } 
      else if(tempMid > high) 
      { 
       myMovie[indexCnt].equals(myMovie[tempLow]); 
       tempLow++; 
      } 
      else if(myMovie[tempLow].getYear() < myMovie[tempMid].getYear()) 
      { 
       myMovie[indexCnt].equals(myMovie[tempLow]); 
       tempLow++; 
      } 
      else 
      { 
       myMovie[indexCnt].equals(myMovie[tempMid]); 
       tempMid++; 
      } 
      indexCnt++; 
     } 

     for(int x = low; x < high; x++) 
     { 
      myMovie[x].equals(myMovie[x-low]); 
     } 

    } 

电影4:

public class Movie4 { 

    // instance variables 
    String title ; 
    int year; 
    String studio; 

    /** 
    * Constructor for objects of class InventoryItem 
    */ 
    public Movie4(String t,int y,String s) 
    { 
     // initialise instance variables 
     title = t; 
     year = y; 
     studio = s; 
    } 
    public String getTitle() 
    { 
     return title; 
    } 
    public int getYear() 
    { 
     return year; 
    } 
    public String getStudio() 
    { 
     return studio; 
    } 
    @Override 
    public String toString() 
    { 
     return title + ", " + year + ", "+studio; 
    } 
    public boolean equals (Movie4 other) 
    { 
     return(title.equals(other.getTitle())); 
    } 
     public int compareTo(Object other) 
     { 
     int result; 
     String otherTitle = ((Movie4)(other)).getTitle(); 
     result = title.compareTo(otherTitle); 
     return result; 
    } 
} 
+0

此处缺少一些内容:“Movie4”的代码。提示:还有'Arrays.sort()'。 – fge

+1

@fge我可能是错的,但我正在得到OP的想法来实现他/她自己的分拣系统的基础上仔细考虑使用合并排序的氛围。 – supersam654

+0

我应该在这里发布Movie4代码吗? – user2443602

回答

0

你如何比较两个Movie4对象?我建议2种方式:

选项#1:

Movie4类必须有equals()方法重写。这样你的排序逻辑将正常工作。请参阅this

选项#2:

如果你想使用Arrays.sort()方法的使用,构建排序,你的类必须实现Comparable并有compareTo()方法。请参阅this

+0

嗯?不,因为这是一个比较,所需要的是“Comparable”或“Comparator”。 – fge

+0

@fge Comparable将与Arrays.sort()一起使用。我相信OP希望拥有他/她的排序逻辑,而不是使用内置排序实现。看到我上面的编辑。 –

相关问题