如何检查用户通过扫描仪输入的字符串(用户可以选择要键入的单词数量(是否包含相同的字母?假设用户键入以下3个单词:
种族自行车计算机
这个例子中的每个单词都包含"e"one_answers"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);
}
}
}
这里需要几个部分。
-
使用扫描仪从用户那里获取单词。你不是在问这个。其想法是提示、读取输入并生成一个字符串数组。一种方法可能是使用split方法。你不是在问这个部分。你问一旦有了这个字符串数组该怎么办。为了测试其他部分,你可以使用传递给main的args,然后开发这个部分。
-
一种在两个字符串之间查找常用字母的方法。你表示你有这样的方法。所以我不会分享这些。让我们想象一下:
/**
- 方法findCommonLetters*
- @param word1第一个单词
- @param word2第二个单词
- @返回包含两个单词中常见字母的字符串,不重复*/
公共字符串findCommonLetters(字符串字1,字符串字2({//您的代码在这里}
-
一种获取任意长度字符串数组并获取所有共同字母的方法。这就是你的要求。这里有一个方法可以做到这一点,假设你有2中描述的方法。我们的想法是一次只处理2个单词,然后在下一个单词中的所有单词中只寻找那些共同的字母(并循环直到我们处理完所有单词(。代码如下:
/**
- 方法findCommonLetters*
- @param words单词数组
- @return包含所有单词的字母的字符串*/
publicStringfindCommonLetters(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;
}
}
把这三个部分放在一起会得到想要的结果。