2014-10-22 47 views
0
public class Main {  
    public static void main(String[] args) throws FileNotFoundException { 
     ArrayList<Country> cList = new ArrayList<Country>(); 
     ArrayList choice = new ArrayList(); 
     File inf = new File("src/countrydata.txt"); 
     Scanner scan = new Scanner(inf).useDelimiter("[\t|\n|\r]+"); 
     Scanner s = new Scanner(System.in); 
     int p = 0; 
     double g = 0; 
     while(scan.hasNext()){ 
      cList.add(new Country(scan.next(), scan.nextInt(), scan.nextDouble())); 
     } 

     System.out.print("Would you like in sorted my name(n), population(p) or growth(g): "); 
     String go = s.next(); 
     go = go.toLowerCase(); 
     if(go.equals("n")){ 
      choice.add(go); 
     }else if(go.equals("p")){ 
      choice.add(p); 
     }else if(go.equals("g")){ 
      choice.add(g); 
     } 

     MyUtil.bubbleSort(cList, choice); 

我的錯誤:(線以上)約束不匹配:用的一般方法冒泡(列表,列表)類型的MyUtil不適用於參數(ArrayList,ArrayList)。推斷型國家是不是有界參數的有效替代品> }「推斷類型_____不是有界參數的有效替代品」

//Sort Class 

public class MyUtil <E extends Comparable<E>>{ 

    public static <E extends Comparable<E>>void bubbleSort(List<E> list, List choice){ 
     int n = list.size(); 
     boolean swap = true; 
     while(swap){ 
      swap = false; 
      for(int i = 0; i < n-1; i++){ 
       if(list.get(i).compareTo(list.get(i+1)) == 1){ 
        swap(list, i, i+1); 
        swap = true; 
       } 
      } 
     } 
    } 

    public static <E extends Comparable<E>>void swap(List<E> list, int i, int j){ 
     E temp = list.get(i); 
     list.set(i, list.get(j)); 
     list.set(j, temp); 
    } 
} 


public class Country { 
    private String name; 
    private int population; 
    private double growth; 

    public Country(String name, int population, double growth){ 
     this.name = name; 
     this.population = population; 
     this.growth = growth; 
    } 

    public String getName(){return name;} 
    public int getPopulation(){return population;} 
    public double getGrowth(){return growth;} 

    public String toString(){ 
     return name + ", population of " + population + ", with an anual growth of: " + growth + "."; 
    } 

    public int compareTo(Country c, String s){ 
     if(name.substring(0, 1).compareTo(c.getName().substring(0, 1)) > 0){ 
      return -1; 
     }else if(name.substring(0, 1).compareTo(c.getName().substring(0, 1)) == 0){ 
      return 0; 
     }else{ 
      return 1; 
     } 
    } 

    public int compareTo(Country c, int p){ 
     if(population < c.getPopulation()){ 
      return -1; 
     }else if(population == c.getPopulation()){ 
      return 0; 
     }else{ 
      return 1; 
     } 
    } 

    public int compareTo(Country c, double g){ 
     if(growth < c.getGrowth()){ 
      return -1; 
     }else if(growth == c.getGrowth()){ 
      return 0; 
     }else{ 
      return 1; 
     } 
    } 
} 
+0

你能爲你的問題選擇更好的標題嗎? – 2014-10-22 02:21:27

+0

我可以,但我是新來的,我真的不知道該怎麼稱呼它:/ – 2014-10-22 02:23:08

+0

你甚至不*使用*你的第二個參數;爲什麼還要去那裏? – Makoto 2014-10-22 02:31:25

回答

5

的問題是,你在該行

public static <E extends Comparable<E>>void bubbleSort(List<E> list, List choice) 

E必須延伸Comparable<E>Country不指定不。爲了讓編譯,你必須改變

public class Country { 

public class Country implements Comparable<Country> { 

,你還必須實現

public int compareTo(Country c) {} 

,但做這種方式贏得」您可以靈活地根據多個不同的維度進行排序。

相關問題