0

この Java プログラムではすべて正常に動作しますが、最後に文字の長さに一致する単語数を取得する必要がありますが、取得方法がわかりません。

Scanner input = new Scanner(System.in);

String s1 = "Enter the name 1:";
System.out.println(s1);
s1 = input.next();

String s2 = "Enter the name 2:";
System.out.println(s2);
s2 = input.next();

if (s1.equals(s2)) {
    System.out.println("They match");
} else {
    System.out.println("They dont match");
}

char[] c = s1.toCharArray();
char[] d = s2.toCharArray();

for (char i = 0; i < c.length; i++) {
    for (char j = 0; j < d.length; j++) {
        if (c[i] == d[j]) {
            System.out.println("The number of letters matched are :" + c[i]);
        }

    }
}
System.out.println("The number of letters matched are :" + c.length);
4

4 に答える 4

1

カウンターを利用する

int counter = 0 ;
for (char i = 0; i < c.length; i++) {
    boolean found = false;
    for (char j = 0; j < d.length; j++) {
        if (c[i] == d[j]) {
            found = true;
            System.out.println("The number of letters matched are :" + c[i]);
            break;
        }
    }
    if(found){
        counter++;
    }
}
System.out.println("The number of letters matched are :" + counter);
于 2013-10-04T03:20:46.843 に答える
0

s1 の文字が s2 にも表示される回数が必要な場合:

int counter = 0;
for (int i=0; i<s1.length(); i++) {
  if (s2.indexOf(s1.charAt(i)) >= 0) {
    counter++;
  }
}
System.out.println("The number of letters matched are :" + counter);

代わりに、s1 と s2 で共有される個別の文字数が必要な場合:

Set<Character> set = new HashSet<>();
int counter = 0;
for (int i=0; i<s1.length(); i++) {
    set.add(s1.charAt(i));
}
for (int j=0; j<s2.length(); j++) {
  if (set.contains(s2.charAt(j))) {
    counter++;
  }
}
System.out.println("The number of letters matched are :" + counter);
于 2013-10-04T03:41:49.320 に答える
0

目的が 2 つの文字列間の共通文字の数を取得することである場合、1 つの方法は、両方の文字列を文字セットに変換し、2 つのセット間の交差を設定してそのサイズを取得することです。

于 2013-10-04T03:33:14.297 に答える
0
char[] c = s1.toCharArray();
char[] d = s2.toCharArray();
int count = 0;
for (char i = 0; i < c.length; i++) {
    for (char j = 0; j < d.length; j++) {
        if (c[i] == d[j]) {
            count++;
        }
    }

}

System.out.println("The number of letters matched are :" + count);

これがあなたが探しているものだと思います。

ループ内の一致数をカウントする必要があり、ループ後に両方の配列にある文字数を表示します。

于 2013-10-04T03:22:21.263 に答える