二つの文字列間のマッチング文字を見つけます

ここで、
public class findMatching {
   public static void main(String[] args) {
      String matchOne = "caTch";
      String matchTwo = "cat";
      findMatching(matchOne, matchTwo);
   }

   public static void findMatching(String matchOne, String matchTwo) {
      int lengthOne = matchOne.length();
      int lengthTwo = matchTwo.length();
      char charOne;
      char charTwo;

      while(!matchOne.equals(matchTwo)) {
         for(int i = 0; i < lengthOne && i < lengthTwo; i++) {
            charOne = matchOne.charAt(i);
            charTwo = matchTwo.charAt(i);
            if(charOne == charTwo && lengthOne >= lengthTwo) {
               System.out.print(charOne);
            } else if (charOne == charTwo && lengthTwo >= lengthOne){
               System.out.print(charTwo);
            } else {
               System.out.print(".");
            }
         }
      }
   }
}

私はと呼ばれる静的メソッドを作成しているfindMatching 2つの文字列パラメータを取り込み、その後、一致する文字のためにそれらを比較します。一致する文字が検出された場合には一致しない文字がで表されているが、それは言った文字を印刷します「」代わりに。

EX:のためにcaTchcat、期待される出力があるべきca...非マッチング文字がで表される場合、「」長い文字列インチ

今しかし、私のプログラムの出力は出力しca.、それが唯一の短い文字列の一致しない文字を印刷していることに。私は、問題の原因がのための私のif文のロジックであることも信じてlengthOnelengthTwo

Asthor:

あなたのforループとすぐにあなたがやっているように短い文字列の長さを満たすように終了しますi < lengthOne && i < lengthTwoあなたが長い文字列の末尾に到達するまで行くのループを続けるが、短い文字列は文字で出ているとき比較を停止する必要がありますので。

このような何かは仕事をすることができるだろう

public static void findMatching(String matchOne, String matchTwo) {
  int lengthOne = matchOne.length();
  int lengthTwo = matchTwo.length();
  char charOne;
  char charTwo;

  for(int i = 0; i < lengthOne || i < lengthTwo; i++) {
    if(i < lengthOne && i < lengthTwo) {
        charOne = matchOne.charAt(i);
        charTwo = matchTwo.charAt(i);
        if (charOne == charTwo) {
           System.out.print(charTwo);
        } else {
           System.out.print(".");
        }
    } else {
       System.out.print(".");
    }

  }
}

私はそれが永遠にプログラムの実行になるだろうとしてループがある一方でのポイントは、しかし、多分あなたはいるかのようにしたくわからないのですか?

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=362182&siteId=1