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循环中出错了。它说左手边必须是一个变量。我怎样才能计算出第一个字符串和第二个字符串出现的字符?
答案 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"));
}