Java 该程序打印所有团队的名称,而不仅仅是违反规则的团队
下面的程序首先获取两个整数,即合法足球运动员的数量(n)和球队的数量(m)。在接下来的n行中,它接受合法玩家的名字,并将其作为hashmap的键,其所有值均为字符串零。然后是他们选择的球队和球员的名字。如果一个队选择的球员的名字不在合法球员之列,则该队违反了法律,其名字将被打印为有罪,或者如果一个队选择的球员已经被另一个队录取,则两个队的名字都将被打印。 我把它们放在树上,因为我想把名字按字母顺序打印出来。 但是当我运行程序时,所有的团队名称都会打印出来,问题出在哪里Java 该程序打印所有团队的名称,而不仅仅是违反规则的团队,java,hashmap,treeset,Java,Hashmap,Treeset,下面的程序首先获取两个整数,即合法足球运动员的数量(n)和球队的数量(m)。在接下来的n行中,它接受合法玩家的名字,并将其作为hashmap的键,其所有值均为字符串零。然后是他们选择的球队和球员的名字。如果一个队选择的球员的名字不在合法球员之列,则该队违反了法律,其名字将被打印为有罪,或者如果一个队选择的球员已经被另一个队录取,则两个队的名字都将被打印。 我把它们放在树上,因为我想把名字按字母顺序打印出来。 但是当我运行程序时,所有的团队名称都会打印出来,问题出在哪里 import ja
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);
}
}
我期望的输出是:
real madrid
real sociedad
但我得到的结果是:
atletico madrid
real madrid
real sociedad
valencia
实际上,我会怀疑这些是循环条件:
for(int i=0;i<=numberOfPlayers;i++) {
用于(int i=0;我是否尝试过调试代码以找出哪里出了问题?此代码确实不可读。为什么不使用System.out来说明您输入的内容。还有一些注释会很好。我不明白为什么我在开始时输入玩家数量,并且再次为每个团队输入玩家数量。您的循环也为1这也是我感到困惑的地方。当我输入时,你能为程序发布一个示例输入吗?请用解决方案更新。
for(int i=0;i<=numberOfPlayers;i++) {
for(int j=0;j<=numberOfPlayers;j++) {
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();
scanner.nextLine();
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();
scanner.nextLine();
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);
}
}