gpt4 book ai didi

java - 识别唯一的字符串

转载 作者:行者123 更新时间:2023-12-02 09:14:54 25 4
gpt4 key购买 nike

我从一个类似这样的文件中读取了一些字符串

"Anderson, T",CWS,SS,...
"Anderson, B",MIA,3B,...
"Galvis, F",CIN,SS,...

我需要用户输入一个名称(例如“Anderson”或“Galvis”),如果该名称不足以识别唯一的玩家,我需要打印一条错误消息。因此,如果用户想要选择“Anderson,T”,他们必须指定“Anderson,T”)。

目前我有一个函数,它接受名称(“Anderson,T”或“Anderson,B”)并找到正确的字符串,该函数可以在下面找到

public static boolean findPlayer(String playerName) {
// Find specified player
int found = -1;
for (int j = 0; j < players.size(); j++) {
if (players.get(j).toString().toLowerCase().contains(playerName.toLowerCase())) {
found = 0;
break;
}
}
if (found == 0)
return true;
else
return false;
}

有没有办法修改代码,使其接受“Anderson”,然后打印出错误?

最佳答案

由于该方法名为 findPlayer,因此它应该返回找到的播放器。

由于您希望在有多个玩家与名称匹配时失败,因此您可以使用异常来表明这一点。

您显然想知道是否没有找到玩家,因此您可以返回null,或者将返回类型更改为Optional,或者抛出另一个异常来表明这一点。

在这里,我们将对非唯一名称进行异常(exception)处理,将 null 表示未找到:

public static Player findPlayer(String playerName) {
Pattern nameRegex = Pattern.compile(Pattern.quote(playerName), Pattern.CASE_INSENSITIVE);
Player foundPlayer = null;
for (Player player : players) {
if (nameRegex.matcher(player.toString()).find()) {
if (foundPlayer != null)
throw new IllegalArgumentException("Multiple player matches name: " + playerName);
foundPlayer = player;
}
}
return foundPlayer; // returns null if not found
}

更改了代码以使用正则表达式来实现不区分大小写的 contains 逻辑,因此在搜索过程中不会创建大量中间小写字符串。

关于java - 识别唯一的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com