显示两个字符串之间共享的字符

Show Characters shared between two strings

对于 Java 练习,我正在编写一个程序,用户可以在其中输入两个字符串。然后程序检查这两个字符串是否共享任何相似的字符并将它们输出到屏幕。

例如 Terrarium 和 Terraform 是它应该打印的两个字符串 t e r r a r。然而,当我 运行 我的程序时,它总是简单地输出第一个字符串中的所有字符。 (在本例中为 T e r r a f o r m。)

我怀疑我是基于对循环的有限理解而产生了逻辑错误。但是当我寻找答案时,人们似乎总是使用与我类似的方法。

这是您查看的代码:

  import java.util.Scanner;

  public class CountMatches 
  {
     public static void main(String[] args) 
     {
         Scanner keyboard = new Scanner(System.in);
         System.out.println(" Please enter a String >> ");
         String stringA = keyboard.nextLine();
         System.out.println(" Please enter another String >> ");
         String stringB = keyboard.nextLine();

         for(int counter = 0; counter < stringA.length(); counter++ )
         {
            char compareA = stringA.charAt(counter);
            char compareB = stringB.charAt(counter);
            //System.out.println(compareA);
            //System.out.println(compareB);
            //System.out.println("");

            if(compareA != compareB)
            {
                System.out.println("");
            }
            else if(compareA == compareB);
            {
                System.out.println(compareA);
                System.out.println("");
            }
        }
     }
  }
else if(compareA == compareB);

去掉这一行的分号,应该可以了。我也会去掉第一个 if 语句,只保留第二个。

这段代码有两个问题。

首先,

    for(int counter = 0; counter < stringA.length(); counter++ )

如果两个字符串的长度不同,您可以通过超出另一个字符串的末尾来获得异常。所以,这样做:

int len = stringA.length();
if (len > stringB.lengh()) len = stringB.length();

接下来,你的代码失败的原因是因为你有一个;在你的最后。您的代码应该是:

        if(compareA != compareB)
        {
            System.out.println("");
        }
        else // Don't need the == here
        {
            System.out.println(compareA);
            System.out.println("");
        }

祝你好运。