3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
public void addPlayer(String name, boolean gender, int index) throws RuntimeException {
List<String> names = new ArrayList<>(); // you create a new instance of the list each time you call it, so it'll always be empty
if (names.contains(name)) // your empty list does not contain anything
throw new DuplicatePlayerException();
else {
players[index] = new Player(name, gender);
names.add(name);
}
}
您需要更改方法以使用實(shí)例級(jí)別列表:
private List<String> names = new ArrayList<>();
public void addPlayer(String name, boolean gender, int index) throws RuntimeException {
if (names.contains(name))
throw new DuplicatePlayerException();
else {
players[index] = new Player(name, gender);
names.add(name);
}
}
所以names每次調(diào)用方法時(shí)都不會(huì)刪除的內(nèi)容。

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以考慮Set<Player>代替數(shù)組。Set根據(jù)定義不能包含重復(fù)項(xiàng)。假設(shè)Player已實(shí)現(xiàn)equals/hashcode您的代碼可能如下所示:
Set<Player> players = new HashSet<>();
public void addPlayer(Player player) throws RuntimeException {
if (!players.add(player)) {
throw new DuplicatePlayerException();
}
}
Set::add如果集合尚未包含該元素,則返回 true

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
String Names = "John";
if (Names.toLowerCase().contains("john")){
System.out.println("yes");
}
您還可以使用 .toLowerCase().contains() 來包含區(qū)分大小寫的輸入。
添加回答
舉報(bào)