Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用超类及其扩展_Java_Inheritance_Subclass_Abstract_Superclass - Fatal编程技术网

Java 使用超类及其扩展

Java 使用超类及其扩展,java,inheritance,subclass,abstract,superclass,Java,Inheritance,Subclass,Abstract,Superclass,我想根据一些球队的得分(胜:3分,平:1分,败:0分)对他们进行排序。我有一个数组,其中包含一些球队的名字和他们的结果,我提取了他们的分数,然后按降序排列。以下是我使用的代码: import java.util.*; import java.util.Map.Entry; public class SCAN{ public static void main(String[] args) { Map<String, Integer> points = new Hash

我想根据一些球队的得分(胜:3分,平:1分,败:0分)对他们进行排序。我有一个数组,其中包含一些球队的名字和他们的结果,我提取了他们的分数,然后按降序排列。以下是我使用的代码:

import java.util.*;
import java.util.Map.Entry;

public class SCAN{
public static void main(String[] args) {
        Map<String, Integer> points = new HashMap<>();
        String[] challenges = new String[]{
            "Team(A) 2 - 1 Team(C)",
            "Team(D) 3 - 1 Team(A)",
            "Team(B) 3 - 3 Team(D)",
            "Team(C) 0 - 4 Team(B)",
            "Team(B) 2 - 0 Team(A)"
        };
    calcualte(challenges, points);
    List<Entry<String, Integer>> entries = new ArrayList<Entry<String, Integer>>(
            points.entrySet());
    Collections.sort(entries, new Comparator<Entry<String, Integer>>() {
        public int compare(Entry<String, Integer> e1,
                Entry<String, Integer> e2) {
            return e2.getValue().compareTo(e1.getValue()); // Sorts
                                                            // descending.
        }
    });
    Map<String, Integer> orderedMap = new LinkedHashMap<String, Integer>();
    for (Entry<String, Integer> entry : entries) {
        orderedMap.put(entry.getKey(), entry.getValue());
    }
    for (Entry<String, Integer> element : entries) {
        System.out.println(element);
        }
}

private static void calcualte(String[] challenges, Map<String, Integer> points) {
    List<String> challengeList = new ArrayList<>();
    for (String str : challenges) {
        String[] bits = str.trim().split(" ");
        String firstTeam = bits[0];
        String lastTeam = bits[bits.length - 1];
        if (!challengeList.contains(firstTeam)) {
            challengeList.add(firstTeam);
        }
        if (!challengeList.contains(lastTeam)) {
            challengeList.add(lastTeam);
        }
        int firstScore = Integer.parseInt(bits[1]);
        int lastScore = Integer.parseInt(bits[3]);
        if (firstScore > lastScore) {
            insert(3, points, firstTeam);
            insert(0, points, lastTeam);
        } else if (firstScore < lastScore) {
            insert(3, points, lastTeam);
            insert(0, points, firstTeam);
        } else {
            insert(1, points, firstTeam);
            insert(1, points, lastTeam);
        }
        {

        }
    }

}

private static void insert(int i, Map<String, Integer> points, String team) {
    int score = points.containsKey(team) ? points.get(team) : 0;
    score += i;
    points.put(team, score);
}
}

主类名可以是
Playleage
,它应该包含我在第一个代码中显示的
String[]challenges=newstring[]{…}
。我知道如何根据分数对它们进行排序(如第一个代码),但我不知道如何使用我所说的类。有人能帮我吗?谢谢

对不起,我听不懂你的问题。试着用更少的代码把它分解成一个抽象的问题。值得一提的是,我感觉到您混淆了类的子类化和类的实例化。在我看来,您的代码已经存在一些问题。例如,您计算的值为:calculate(挑战、分数);但您不会将值分配给任何对象。既不是全局变量,也没有任何返回…您可以忽略第一个代码,只使用数组,然后使用该类根据每个团队的得分对其进行排序,数组为String[]challenges=new String[]{“团队(a)2-1团队(C)”,“团队(D)3-1团队(a)”,“团队(B)3-3团队(D)”,"0-4队(B),"2-0队(A);;
public abstract class Playclass {
    private String name;
    Playclass(String name){
        this.name=name;
    }
    public String getName() {
        return name;
    }
    public abstract void print();
    public abstract void won();
    public abstract void drawn();
    public abstract void defeated();

}