Java 使用超类及其扩展
我想根据一些球队的得分(胜:3分,平:1分,败:0分)对他们进行排序。我有一个数组,其中包含一些球队的名字和他们的结果,我提取了他们的分数,然后按降序排列。以下是我使用的代码: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
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();
}