string Java:在不使用循环的情况下将输入与列表中的所有内容进行比较?
这是一个刽子手游戏。 我使用SortedSet存储用户输入的猜测。这些字母存储为字符。我试图做的是将给定单词中的每个字符与SortedSet中的每个字符进行比较,并将匹配的字符附加到返回的字符串中。如果不匹配,则添加“-”
例如:
我有一组猜测:“a”,“e”,“t”
我有一个词:苹果
该方法应返回字符串“a--e”
现在,我有一个方法可以生成一个字符串,它符合我需要的一个字符的格式。我不知道如何修改它,使其适用于集合中的所有角色
我不想为集合中的所有字符运行整个if/else结构,因为这会添加太多破折号,所以我不认为我可以为每个循环使用一个
private int generatePattern(String s, char guess) {
String pattern = "";
for (int i = 0; i < length; i++){
if (s.charAt(i) == guess){
pattern += guess + " ";
} else {
pattern += "- ";
}
}
return pattern;
}
# 1 楼答案
首先,听起来您应该更改方法的返回类型和参数——毕竟,您需要一组字母。而集合有一个
contains
方法。所以我觉得你想要这样的东西:或者换一种说法:
(这也可以通过Java8流实现,但这可能同样简单。)
示例程序:
请注意,您仍然在输入上循环,并且
Set.contains
中可能仍然存在循环(取决于实现),但它会得到您想要的结果# 2 楼答案
你的问题在哪里
在您的代码中,我认为它只剩下一个循环,可能是guess,应该是猜测字母的数组,您可以在第一个循环中对其进行迭代。相反,你可以每次都用每一个猜测的字母给你的生成模式打电话