Java 检查用户输入字符串是否包含相同的字母

Java 检查用户输入字符串是否包含相同的字母,java,compare,Java,Compare,如何检查用户通过扫描仪输入的字符串(用户可以选择要输入的单词数量)是否包含相同的字母?假设用户键入以下3个单词: 比赛 自行车 计算机 本例中的每个单词都包含“e”和“c”。如何比较这些字符串并将结果(e和c)安全保存在新字符串中 public class Comparison { public static void main(String[] args) { String letters = ""; Scanner input = new Scanner(Syste

如何检查用户通过扫描仪输入的字符串(用户可以选择要输入的单词数量)是否包含相同的字母?假设用户键入以下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);
        }
}
}
公共类比较{
公共静态void main(字符串[]args){
字符串字母=”;
扫描仪输入=新扫描仪(System.in);
System.out.println(“您想输入多少字?”:”;
count=input.nextInt();
字符串[]字=新字符串[计数];
for(int i=0;i
这里需要几件

  • 使用扫描仪从用户处获取单词。你不是在问这个问题。想法是提示、读取输入并生成字符串数组。一种方法可能是使用split方法。你不是在问这个部分。你问的是一旦拥有了这个字符串数组,该如何处理它。要测试其他部分,你可以使用传递给main的args,然后开发此工件

  • 一种查找两个字符串之间常用字母的方法。您表示有这样一种方法可以使用。因此,我不打算与您分享。让我们想象一下:

    /**

    • 方法findCommonLetters *
    • @param word1第一个单词
    • @param word2第二个单词
    • @返回包含两个单词中常用字母的字符串,不重复 */
    公共字符串findCommonLetters(字符串字1、字符串字2){ //你的代码在这里 }

  • 一种获取任意长度字符串数组并获取所有字母的共同点的方法。这就是您所要求的。这里有一种方法可以实现这一点,假设您使用了2中描述的方法。其思想是一次只处理2个字符,并在下一个单词的所有单词中只查找这些字母的共同点(并循环,直到我们处理完所有单词)。代码如下:

    /**

    • 方法findCommonLetters *
    • @param单词数组
    • @返回包含所有单词的字母的字符串 */
  • 公共字符串findCommonLetters(字符串[]字)

    {
    if(words.length==0){
    return“”;//没有字母
    }else if(words.length==1){
    //如果所需的行为与我在这里所做的一样,那么这个else if块可能会消失
    返回单词[0];//通常所有单词都有相同的字母
    }否则{
    字符串结果=单词[0];//第一个单词
    for(int i=1;i

    把这三个部分放在一起会得到想要的结果。

    到目前为止你尝试了什么?我尝试了indexOf和charAt等方法,但它们对我来说只适用于固定的字符串计数,比如如果我有两个字符串,那么它就起作用了,但是用户的输入是不同的故事,请告诉我们你尝试了什么…如果你能在或者两个词,你可以用n个词来做。如果有两个词,很好。如果没有,就用前两个词来做,然后把结果作为新的第一个词。重复,直到只有两个词,再做一次,你就完成了。你可以用split来做这些词。如果你成功了,那么如果重叠是空的,你可以让它提前退出。另外,你可以设置放置单词的位置,但您没有阅读它们。此外,可能需要澄清bocce足球浣熊的答案:co或cco
     {
                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;
                }
            }