以下程序首先获取两个整数,合法足球运动员的人数(n)和球队人数(m)。在接下来的n行中,它将合法参与者的名称作为哈希表的关键字,并将其所有值字符串为零。然后将使用球队及其选择的球员的名字。如果一个团队选择了一个名字不属于合法球员的球员,则该球队违反了法律,其姓名将被列为有罪,或者如果一个团队选择了另一个球队已经选择的球员,则两个球队的名字将被打印。我把它放在树形目录中,因为我希望按字母顺序打印名称。但是当我运行程序时,所有团队的名字都打印在哪里了?
import java.util.HashMap;
import java.util.Scanner;
import java.util.TreeSet;
public class Tamrin1_2_1 {
public static void main(String[] args) {
String player,team;
int numberOfTeams,numberOfPlayers;
Scanner scanner=new Scanner(System.in);
HashMap<String,String> teamsAndPlayers=new HashMap<String,String>();
TreeSet<String> guilty=new TreeSet<String>();
numberOfPlayers=scanner.nextInt();
numberOfTeams=scanner.nextInt();
for(int i=0;i<=numberOfPlayers;i++) {
teamsAndPlayers.put(scanner.nextLine(), "0");
}
for(int i=0;i<numberOfTeams;i++) {
team=scanner.nextLine();
numberOfPlayers=scanner.nextInt();
for(int j=0;j<=numberOfPlayers;j++) {
player=scanner.nextLine();
if(teamsAndPlayers.containsKey(player)) {
if(teamsAndPlayers.get(player).equals("0")) {
teamsAndPlayers.put(player, team);
}
else {
guilty.add(team);
guilty.add(teamsAndPlayers.get(player));
}
}
else {
guilty.add(team);
}
}
}
System.out.println(guilty);
}
}
这是示例输入:
10 4
dani carvajal
eder militao
sergio ramos
raphael varane
nacho
eden hazard
toni kroos
martin odegaard
karim benzema
luka modric
real madrid
3
martin odegaard
karim benzema
sergio ramos
valencia
2
dani carvajal
luka modric
real sociedad
2
martin odegaard
nacho
atletico madrid
3
raphael varane
eden hazard
toni kroos
我想要的输出是:
real madrid
real sociedad
但是我得到的输出是:
atletico madrid
real madrid
real sociedad
valencia
实际上,我会怀疑这些循环条件: