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

时间:2016-02-24 18:51:11

标签: java string if-statement for-loop string-comparison

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

例如,Terrarium和Terraform是它应该打印的两个字符串。但是,当我运行我的程序时,它总是只输出第一个字符串中的所有字符。 (在这种情况下,请注意)。

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

以下是您查看的代码:

  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("");
            }
        }
     }
  }

2 个答案:

答案 0 :(得分:1)

else if(compareA == compareB);

摆脱这一行的分号,它应该有效。我也会摆脱第一个if语句,只保留第二个。

答案 1 :(得分:0)

此代码存在两个问题。

首先,

    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("");
        }

祝你好运。