如何在arraylist java中检测重复项

i7uaboj4  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(305)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

22天前关门了。
改进这个问题
我想让java代码,如果一个国家已经有5个团队,他们不能创建更多的团队。
例如:
用户输入国家名称asd,然后输入团队名称等,用户再输入4次。
第六次当用户输入asd country name时,它将返回一个错误,但是如果用户输入另一个国家名称,他们可以创建另一个团队。
我试过用 arrayList.size() 但我还是没能成功。
这是我的密码

import java.util.*;
public class Main {
Scanner sc = new Scanner(System.in);
ArrayList<Team> teams = new ArrayList<>();

public Main() {
    int choose = 0;
    do {
        choose = displayMenu(); sc.nextLine();

        switch (choose) {
        case 1:
            createTeam();
            break;
        case 2:
            addMatch();
            break;
        case 3:
            showStat();
            break;
        case 4:
            showRank();
            break;
        case 5:
            eraseTeam();
            break;

        }

    } while (choose != 6);

}

    private void createTeam() {
    String country, teamName, coachName, participantName;
    System.out.print("Enter Country Name : ");
    country = sc.nextLine();
    do {
        System.out.print("Enter Team Name : ");
        teamName = sc.nextLine();
        participantName = getParticipantName();
        System.out.println("Enter Coach Name : ");
        coachName = sc.nextLine();
        Team team = new Team(country, teamName, coachName, participantName);
        teams.add(team);
    } while (teams.size()>=5);
}

对不起,我英语不好。先谢谢你

gdx19jrr

gdx19jrr1#

这是代码应该执行的操作的简化版本。我看到您在将方法的结果传递回createteam函数时遇到了问题,因此请阅读布尔方法或任何其他类型的返回结果的方法。此外,您还需要阅读有关将参数引入方法的内容,以便可以将计算所需的重要值传递到方法中,供方法使用
string countries=“country1 country1 country1 country1 country2 country4”;

String[] country = countries.split(" ");
    Scanner in = new Scanner(System.in);

    System.out.println("Input a country name:");
    String inputcountry = in.nextLine();
    int count = 0;

    for (String item : country) {
        if (item.equals(inputcountry)) {
            count++;
        }

        if (count >= 5) {
            System.out.println("More than 5 duplicates! Rejected!");
            break;
        }

    }
l7wslrjt

l7wslrjt2#

你能告诉我这个代码对你有什么用吗?
乍一看,我认为问题可能就在这条线上

while (teams.size()>=5)

如果我理解正确,这个循环将继续,而大小至少是5,这不是在开始。
也许试着把它调成

while (teams.size()<5)

编辑:从注解部分添加代码
将此添加到主类名称下 Map<String, List<Team>> countryTeams = new HashMap<String, List<Team>>(); 有关详细信息,请在此处阅读hashmap:https://www.w3schools.com/java/java_hashmap.asp
在代码中使用hashmap将团队与国家进行匹配
private void createteam(){string country,teamname,coachname,participantname;system.out.print(“输入国家名称:”);country=sc.nextline();countryteams.put(country,new arraylist());while(countryteams.get(country.size()<5){system.out.print(“输入团队名称:”);teamname=sc.nextline();participantname=getparticipantname();system.out.println(“输入coach名称:”);coachname=sc.nextline();team team=新团队(country,teamname,coachname,participantname);countryteams.get(country).add(团队);
} }

mrphzbgm

mrphzbgm3#

所以我认为你的问题是你在使用>=。如果您输入5个团队,条件仍然为真,因为团队的大小为5且5>=5。如果你用<它会有用的。我也是 while (teams.size() < 5) 而不是 while (teams.size()>=5) 这个。

相关问题