Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Java のコンパイルエラーについて

以下のソースコードでなぜかエラーが起こってしまいます,どう解決したらいいですか?
import java.util.Scanner;
interface PointComparator{
   int compare(Point p1, Point p2);
}

class Point{
    int x,y;
    public Point(int x, int y){
    this.x = x;
    this.y = y;
    }
    public  void print(){
    System.out.println();
    }
}

class XYComparator implements PointComparator{

    // public XYComparator(){super();}
    public int campare(Point p1,Point p2){
    if(p1.x < p2.x) return -1;
    
    else     if(p1.x == p2.x){
        if(p1.y < p2.y) return -1;
        if(p1.y == p2.y) return 0;
        if(p1.y > p2.y) return 1;
    }
    else return 1;
    }
}
class YXComparator implements PointComparator{

    //  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{
^

2

回答

35205

閲覧

2件の回答

評価

0

「なぜか」って…そんなに自信があるのか?
まず自分のコードに問題があるんだと考えないと。

オーバーライドしたメソッドには、アノテーションを付けよう。
それでエラーの原因が分かるんじゃないかな。

エディタのフォントが小さいと、それでも判らないかも知れないが…。

評価

0

アノテーションについては、このあたりが良いかも知れない。
今回の問題は、ここに書いてあることそのままだ。
https://www.tech-teacher.jp/blog/java-annotation/

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。