我正在创建一个项目,用户在其中输入多个运动队的名称。不允许用户两次输入团队的相同名称。我不知道如何比较数组的元素。我尝试使用带有equals的while循环,但我认为这不是正确的方法。
for(int i = 0; i<tabEquipe.length;i++){ // tabEquipe is the table content of the teams that the user enters.
System.out.println("Entrez les noms des equipes: "); // Asks user to enter team names.
rep2 = a.nextLine();
tabEquipe[i] = rep2;
while(tabEquipe[i].equals(tabEquipe[i])){
}
}
答案 0 :(得分:1)
这令人困惑,所以我假设您已经有一个要添加的新用户,并且看来您可以将用户与equals
进行比较。如果有一个新用户newUser
,则可能是这样的:
boolean found = false;
for(int i = 0; i < tabEquipe.length; i++){
if (tabEquipe[i].equals(newUser))
{
found = true;
break;
}
}
或更短:
boolean found = Arrays.asList(tabEquipe).contains(newUser);
答案 1 :(得分:0)
您可以使用HashSet来存储团队的名称,这样可以非常有效地检查是否已经使用了新名称。例如:
...
Set<String> teamNamesSet = new HashSet<>();
for (int i = 0; i < teamNames.length; i++) {
...
// Checking if a team name was already used
while (teamNamesSet.contains(name)) {
// Show some error message, request input again, etc.
}
// Adding a new team name to the set
teamNamesSet.add(name);
// Adding a new team name also to the array you need
teamNames[i] = name;
}
此方法的最大优势在于,检查名称是否在HashSet
中已经花费了恒定的时间(O(1)
)。使用for循环进行检查具有线性复杂度(O(n)
)。