// public YXComparator(){} public int campare(Point p1, Point p2){ if(p1.y < p2.y) return -1; if(p1.y > p2.y) return 1; if(p1.y == p2.y){ if(p1.x < p2.x) return -1; if(p1.x == p2.x) return 0; if(p1.x > p2.x) return 1; } } } class SortingPointMachine{ PointComparator comparator;
public SortingPointMachine(PointComparator comparator){ this.comparator = comparator; }
public void setComparator(PointComparator comparator){ this.comparator = comparator; }
public void sort(Point[] a){ for(int i = 0;i<a.length;i++){ int mini = i; for(int j = i+1;j<a.length; j++){ if(comparator.compare(a[j],a[mini]) < 0) mini = j; } Point t = a[mini]; a[mini] = a[i]; a[i] = t; } }
}
class SortingPointApplication{
public SortingPointApplication(){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Point[] p = new Point[n];
for (int i=0;i < n;i++){ p[i] = new Point(sc.nextInt(),sc.nextInt()); } SortingPointMachine machine = new SortingPointMachine(new XYComparator()); machine.sort(p); System.out.println("Sorted by X-Y:"); for (int i = 0;i< p.length;i++) p[i].print(); machine.setComparator(new YXComparator()); machine.sort(p); System.out.println("Sorted by Y-X:"); for(int i = 0;i<p.length;i++) p[i].print(); }
public static void main(String[] args){ new SortingPointApplication(); } } 以下エラーコードです XYComparatorはabstractでなく、PointComparator内のabstractメソッドcompare(Point,Point)をオーバーライドしません class XYComparator extends Point implements PointComparator{ ^ SortingPointApplication.java:31: エラー: YXComparatorはabstractでなく、PointComparator内のabstractメソッドcompare(Point,Point)をオーバーライドしません class YXComparator extends Point implements PointComparator{ ^