2017-11-18 156 views
-3

我已经做了Java程序添加的航班信息的ArrayList的元素,我想基于使用比较航班名称进行排序操作。但我得到的FLight.java编译错误,在这条线.... Collections.sort(flightObject,新Compareid());使用可比以按对象

package com.flight; 


import java.util.*; 

public class Flight 
{ 
    public String flightName; 
    public String source; 
    public String destination; 
    public int flightId; 
    public int flightFare; 


    public Flight(String flightName,int flightId,String source, String destination, int flightFare) 
    { 
      super(); 
      this.flightName = flightName; 
      this.source = source; 
      this.destination = destination; 
      this.flightId = flightId; 
      this.flightFare = flightFare; 
    } 

    public String getFlightName() 
    { 
     return flightName; 
    } 
    public int getFlightId() 
    { 
     return flightId; 
    } 
    public String getSource() { 
     return source; 
    } 
    public String getDestination() { 
     return destination; 
    } 

    public int getFlightFare() { 
      return flightFare; 
    } 

    public boolean searchFlight(int originalFlightId, int newFlightId) 
    { 
     if(originalFlightId==newFlightId) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 

    } 


    class Compareid implements Comparator<Flight>{ 

     public int compare(Flight flightObject1,Flight flightObject2){ 
      return (flightObject1.flightName.compareTo (flightObject2.flightName)); 
     } 

    } 
} 

这是主类.............

package com.main; 

import com.flight.*; 

import java.util.*; 

public class HighFly 
{ 

    public static void main(String[] args) 
    { 

     Flight indigo=new Flight("Indigo",1000,"Trivandrum","Dubai",25000); 
     Flight emirates=new Flight("Emirates",1001,"Dehi","US",30000); 
     Flight airindia=new Flight("Air India",1002,"Kochi","Malaysia",29000); 

     ArrayList<Flight>flightList=new ArrayList<Flight>(); 
     flightList.add(indigo); 
     flightList.add(emirates); 
     flightList.add(airindia); 

     System.out.println("FlightId  FlightName   Source   Destination  Fare"); 
      for(Flight flightObject:flightList) 
      { 
       System.out.print(flightObject.getFlightId()); 
       System.out.print("\t\t"+flightObject.getFlightName()); 
       System.out.print("\t\t"+flightObject.getSource()); 
       System.out.print("\t\t"+flightObject.getDestination()); 
       System.out.println("\t\t"+flightObject.getFlightFare()); 
      } 

      //SEARCHING FLIGHT EXISTS 
      System.out.println("Enter flight id"); 
      Scanner scanner= new Scanner(System.in); 
      int checkFlightId=scanner.nextInt(); 
      for(Flight flightObject:flightList) 
      { 
       if(flightObject.searchFlight(flightObject.flightId,checkFlightId)) 
       { 
        System.out.println("Success"); 

       } 
       else 
       { 
        System.out.println("Not success"); 

       } 
      } 

      //*********sorting*********** 
      for(Flight flightObject:flightList) 
      { 
      Collections.sort(flightObject,new Compareid()); 
      } 


      System.out.println("  after sorting  "); 
      System.out.println("FlightId  FlightName   Source   Destination  Fare"); 
      for(Flight flightObject:flightList) 
      { 
       System.out.print(flightObject.getFlightId()); 
       System.out.print("\t\t"+flightObject.getFlightName()); 
       System.out.print("\t\t"+flightObject.getSource()); 
       System.out.print("\t\t"+flightObject.getDestination()); 
       System.out.println("\t\t"+flightObject.getFlightFare()); 
      } 



    } 



} 

帮我解决这个问题。我想用arraylist来实现这个。请在以下代码中找到该错误。

+1

和错误是... –

+0

并请格式化你的代码。你的缩进遍布整个地方,很难阅读。 –

+0

你得到什么错误?请添加它在你的questiion – byteC0de

回答

1

移至比较器出来的飞行类

import java.util.Comparator; 

    class Compareid implements Comparator<Flight> { 
     public int compare(Flight flightObject1, Flight flightObject2) { 
      return (flightObject1.flightName.compareTo(flightObject2.flightName)); 

     } 
    } 

Collections.sort的(flightList,新Compareid()); //需要传递,而不是个别的对象参考下面的海天翔类列表。

import java.util.*; 

public class HighFly { 

    public static void main(String[] args) { 

     Flight indigo = new Flight("Indigo", 1000, "Trivandrum", "Dubai", 25000); 
     Flight emirates = new Flight("Emirates", 1001, "Dehi", "US", 30000); 
     Flight airindia = new Flight("Air India", 1002, "Kochi", "Malaysia", 
       29000); 

     ArrayList<Flight> flightList = new ArrayList<Flight>(); 
     flightList.add(indigo); 
     flightList.add(emirates); 
     flightList.add(airindia); 

     System.out 
       .println("FlightId  FlightName   Source   Destination  Fare"); 
     for (Flight flightObject : flightList) { 
      System.out.print(flightObject.getFlightId()); 
      System.out.print("\t\t" + flightObject.getFlightName()); 
      System.out.print("\t\t" + flightObject.getSource()); 
      System.out.print("\t\t" + flightObject.getDestination()); 
      System.out.println("\t\t" + flightObject.getFlightFare()); 
     } 

     // SEARCHING FLIGHT EXISTS 
     System.out.println("Enter flight id"); 
     Scanner scanner = new Scanner(System.in); 
     int checkFlightId = scanner.nextInt(); 
     for (Flight flightObject : flightList) { 
      if (flightObject.searchFlight(flightObject.flightId, checkFlightId)) { 
       System.out.println("Success"); 

      } else { 
       System.out.println("Not success"); 

      } 
     } 

     // *********sorting*********** 
    for (Flight flightObject : flightList) { 
      Collections.sort(flightList, new Compareid()); 
    } 

     System.out.println("  after sorting  "); 
     System.out 
       .println("FlightId  FlightName   Source   Destination  Fare"); 
     for (Flight flightObject : flightList) { 
      System.out.print(flightObject.getFlightId()); 
      System.out.print("\t\t" + flightObject.getFlightName()); 
      System.out.print("\t\t" + flightObject.getSource()); 
      System.out.print("\t\t" + flightObject.getDestination()); 
      System.out.println("\t\t" + flightObject.getFlightFare()); 
     } 

    } 

} 

和更新的fligh类是

public class Flight { 
    public String flightName; 
    public String source; 
    public String destination; 
    public int flightId; 
    public int flightFare; 

    public Flight(String flightName, int flightId, String source, 
      String destination, int flightFare) { 
     super(); 
     this.flightName = flightName; 
     this.source = source; 
     this.destination = destination; 
     this.flightId = flightId; 
     this.flightFare = flightFare; 
    } 

    public String getFlightName() { 
     return flightName; 
    } 

    public int getFlightId() { 
     return flightId; 
    } 

    public String getSource() { 
     return source; 
    } 

    public String getDestination() { 
     return destination; 
    } 

    public int getFlightFare() { 
     return flightFare; 
    } 

    public boolean searchFlight(int originalFlightId, int newFlightId) { 
     if (originalFlightId == newFlightId) 

     { 
      return true; 
     } else { 
      return false; 
     } 

    } 
} 
+1

虽然我明白,你想是有帮助的,请尽量避免回答这个不适合在我们的[说明中心]规定的指导(https://stackoverflow.com/help)的问题。 –

+0

当然@JoeC,感谢它指向了! – Saran

+0

@Saran:谢谢你这么多。我把它整理好了。此解决方案工作... –