如何检查用户通过扫描仪输入的字符串(用户可以选择要输入的单词数)是否包含相同的字母?假设用户输入以下3个单词:
种族 自行车 电脑
此示例中的每个单词都包含“ e”和“ c”。如何比较这些字符串并将结果(e和c)保存在新字符串中?
public class Comparison {
public static void main(String[] args) {
String letters = "";
Scanner input = new Scanner(System.in);
System.out.println("How many words do you want to type in?:");
count = input.nextInt();
String[] words= new String[count];
for (int i = 0; i < words.length; i++) {
if (words[i].charAt(0) == words[j].charAt(0)) {
letters = letters + words[i].charAt(j);
}
}
}
答案 0 :(得分:0)
这里需要几块。
使用扫描仪从用户那里获取文字。您不是在问这个。想法是提示,读入输入并生成字符串数组。一种方法是使用split方法。您没有问这部分。您询问拥有此字符串数组后该怎么做。要测试其他部分,可以使用传递给main的args,然后进行开发。
一种仅在两个字符串之间查找公用字母的方法。您表示您有这样一种方法。所以我不会分享。让我们想象一下它看起来像:
/ **
public String findCommonLetters(String word1,String word2){ //您的代码在这里 }
采用任意长度的字符串数组并获得所有字母都相同的方法。那就是你要的。假设您具有2工作中所述的方法,则可以使用此方法。想法是一次只处理2个字母,然后在下一个单词中查找到目前为止所有单词中共有的字母(然后循环直到我们处理完所有单词为止)。代码如下:
/ **
公共字符串findCommonLetters(String []个字)
{
if (words.length == 0) {
return ""; //there are no letters
} else if (words.length == 1) {
//if the desired behavior is as I do here, this else if block could go away
return words[0]; //trivially all the words have the same letters
} else {
String result = words[0]; // first word
for (int i = 1; i < words.length; i++) {
result = findCommonLetters(result, words[i]); //find letters in common between all words processed so far and next word
//if you want, you could break here if result is empty
}
return result;
}
}
将这三部分放在一起将得到期望的结果。