我怎样才能计算出第一个字符串出现多少次字符串也会出现在第二个字符串?

时间:2015-02-06 15:33:44

标签: java junit

   public int count_chars_in_String(String s, String s1){
       int count = 0;
       for(int i = 0; i<s.length();i++){
           if(s.charAt(i) = s1.charAt(i)){

           }
       }
   }

这是我能想到的全部内容,在if循环中出错了。它说左手边必须是一个变量。我怎样才能计算出第一个字符串和第二个字符串出现的字符?

5 个答案:

答案 0 :(得分:1)

您正在使用if运算符在=语句中执行作业。要比较两个字符,请使用比较运算符:==

答案 1 :(得分:1)

'='运算符是赋值。 '=='运算符是大多数语言中的比较运算符(相等)。

答案 2 :(得分:1)

使用==进行比较,同时在代码中确保s和s1的长度相同(或者使用最小字符串的长度作为终止),否则你会得到:

StringIndexOutOfBoundsException

错误。

答案 3 :(得分:0)

首先了解它在实现之前是如何工作的。下面的代码将计算第二个字符串的char的事件,比较第一个字符串的字符的char。当第一个字符串不止一次具有相同的字符时,这将不是完美的。做那个修改..

public int count_chars_in_String(String s, String s1){
    int count = 0;
    for(int i = 0; i<s.length();i++){
        for(int j = 0,k = 0; j<s1.length();j++){
            if(s.charAt(i) == s1.charAt(j)){
                k + = 1;
            }
        }
        System.out.println(s.charAt(i)+": "+k+" times");
    }
}

答案 4 :(得分:0)

忽略你问题的主体(此时有缺陷)我会计算两个字符串中出现的字符,如下所示:

public Set<Character> asSet(String s) {
    Set<Character> in = new HashSet<>();
    // Roll all of the strings characters into the set.
    s.chars().forEach(c -> in.add((char) c));
    return in;
}

public int countCharsInBoth(String s, String s1) {
    // All characters in the first string.
    Set<Character> inBoth = asSet(s);
    // Keep only those in the second string too.
    inBoth.retainAll(asSet(s1));
    // Size of that set is count.
    return inBoth.size();
}

public void test() {
    // Prints 3 as expected.
    System.out.println(countCharsInBoth("Hello", "Hell"));
}