为了账号安全,请及时绑定邮箱和手机立即绑定

Java - 如何检查数组的值是否包含指定的值作为属性

Java - 如何检查数组的值是否包含指定的值作为属性

芜湖不芜 2022-07-20 10:29:37
我有一组 Player 对象。球员有名字,当我添加球员时,我想检查球员名字是否已经存在。以下代码永远不会引发异常,它只会添加重复的玩家。public void addPlayer(String name, boolean gender, int index)  throws RuntimeException {    List<String> names = new ArrayList<>();    if (names.contains(name))        throw new DuplicatePlayerException();    else {        players[index] = new Player(name, gender);        names.add(name);    }}
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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);

    }

}

您需要更改方法以使用实例级别列表:


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每次调用方法时都不会删除的内容。


查看完整回答
反对 回复 2022-07-20
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您可以考虑Set<Player>代替数组。Set根据定义不能包含重复项。假设Player已实现equals/hashcode您的代码可能如下所示:


Set<Player> players = new HashSet<>();


public void addPlayer(Player player)  throws RuntimeException {

    if (!players.add(player)) {

        throw new DuplicatePlayerException();

    }

}

Set::add如果集合尚未包含该元素,则返回 true


查看完整回答
反对 回复 2022-07-20
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

String Names = "John";

    if (Names.toLowerCase().contains("john")){

        System.out.println("yes");

    }

您还可以使用 .toLowerCase().contains() 来包含区分大小写的输入。


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信