0

我想计算字符串中的空格:

public class SongApp {
    public static void main(String[] args) {
        String word = "a b c";

        int i =0,spaceCount=0;

        while(i<word.length()){

            char temp = word.charAt(i);         
            System.out.println(temp);
            if(" ".equals(temp)){
                spaceCount++;
            }
            i++;            
        }
        System.out.println("Spaces in string: "+spaceCount);
    }
}

当我用 替换 if 语句时if(temp.equals(" ")),我在原始类型 char 上得到一个“无法调用(字符串)”。

我不明白为什么这行不通。

4

4 回答 4

7

它不起作用,因为您正在对原始类型'char'的值调用Class String(equals())的方法。您正在尝试将“char”与“String”进行比较。

您必须在 'char' 之间进行比较,因为它是一个原始值,您需要使用 '==' 布尔比较运算符,例如:

public class SongApp {

    public static void main(String[] args) {

      String word = "a b c";
      int i = 0,
      spaceCount = 0;

      while( i < word.length() ){
        if( word.charAt(i) == ' ' ) {
            spaceCount++;
        }
        i++;
      }

      System.out.println("Spaces in string: "+spaceCount);
    }
}
于 2013-01-22T22:50:30.873 回答
1

您可以使用字符串的替换函数来替换所有空格(“”)而不是空格(“”),并获取调用替换函数之前和之后的长度之间的差异。通过这个例子:

class Test{

    public static void main(String args[]){

        String s1 = "a b c";
        int s1_length = s1.length();
        System.out.println(s1_length); // 5

        String s2 = s1.replace(" ",""); 
        int s2_length = s2.length();
        System.out.println(s2_length); // 3

        System.out.println("No of spaces = " + (s1_length-s2_length)); // No of spaces = 2
    }
}
于 2013-01-22T23:26:14.750 回答
1

您可以使用 commons-lang.jar 来计算它。

`公共类主要{

public static void main(String[] args) {
    String word = "a b c";
    System.out.println("Spaces in string: " + StringUtils.countMatches(word," "));
}

}`

“StringUtils.countMatches”的来源如下:

public static int countMatches(String str, String sub) {
    if (isEmpty(str) || isEmpty(sub)) {
        return 0;
    }
    int count = 0;
    int idx = 0;
    while ((idx = str.indexOf(sub, idx)) != INDEX_NOT_FOUND) {
        count++;
        idx += sub.length();
    }
    return count;
}
于 2013-01-23T09:15:48.173 回答
0

公共类 CountSpace {

public static void main(String[] args) {

    String word = "a b c";
    String data[];int k=0;
    data=word.split("");
    for(int i=0;i<data.length;i++){
        if(data[i].equals(" ")){
            k++;
        }

    }
    System.out.println(k);

}

}

于 2013-02-08T21:12:26.503 回答