2015-11-16 3 views
-3

У меня возникла проблема с сортировкой ArrayList с использованием Comparator s. Ниже приведен мой основной класс и класс для Card.Сортировка ArrayList с использованием компараторов, но его результат не отображается

метод Компаратор в Card классе:

import java.util.Comparator; 

public class Card implements Comparable <Card>{ 
    // the getter and toString method are define here though. 
    public static Comparator<Card> sortingHeight = new Comparator<Card>(){ 
     @Override 
     public int compare(Card s1, Card s2){ 
      return s2.getHeight()-s1.getHeight(); 
     } 
    }; 

    public static Comparator<Card> sortingSpeed = new Comparator<Card>(){ 
     @Override 
     public int compare(Card s1, Card s2){ 
      return s1.getSpeed()-s2.getSpeed(); 
     } 
    }; 

    public static Comparator<Card> sortingFighting = new Comparator<Card>(){ 
     @Override 
     public int compare(Card s1, Card s2){ 
      return s2.getFightingSkills()-s1.getFightingSkills(); 
     } 
    }; 

    public static Comparator<Card> sortingTitle = new Comparator<Card>(){ 
     @Override 
     public int compare(Card s1, Card s2){ 
      String title1 = s1.getTitle(); 
      String title2 = s2.getTitle(); 
      return title1.compareTo(title2); 
     } 
    }; 
} 

Основной метод:

import java.util.Scanner; 
import java.util.Collections; 
import java.util.ArrayList; 

public static void main(String[] args) { 
    while(!false) { 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("Title.............6" + 
          "\nHeight............7 " + 
          "\nSpeed.............8" + 
          "\nFightingSkill.....9" + 
          "\nBack..............0" 
          ); 
     System.out.print("Enter your choice: "); 
     int userEnter1 = scanner.nextInt(); 

     if (userEnter1 == 6) 
      if(userEnter1 == 7) 
       Collections.sort(ArrayList, Card.sortingHeight); 
      else if (userEnter1 == 8) 
       Collections.sort(ArrayList, Card.sortingSpeed); 
      else if (userEnter1 == 9) 
       Collections.sort(ArrayList, Card.sortingFighting); 
      else if (userEnter1 == 0) 
       increase--; 
     else Collections.sort(ArrayList, Card.sortingTitle); 
    } 

Это компиляция, но никакого результата не будет показывать, когда пользователь вводит входные данные.

ответ

0

Класс карты не требуется для реализации Comparable.

КРП-ELSE заявления кажется странным, он должен быть

 if (userEnter1 == 6) 
      Collections.sort(list, Card.sortingTitle);  
     if(userEnter1 == 7) 
      Collections.sort(list, Card.sortingHeight); 
     else if (userEnter1 == 8) 
      Collections.sort(list, Card.sortingSpeed); 
     else if (userEnter1 == 9) 
      Collections.sort(list, Card.sortingFighting); 
     else if (userEnter1 == 0) 
      increase--; 

И, наконец, отобразить список, чтобы показать результаты.

 for (Card c: list) { 
      System.out.println(c.getTitle()); 
     } 
Смежные вопросы