计算字符串中的空格

时间:2013-01-22 22:29:27

标签: java comparison string

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

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(temp.equals(" "))替换if语句时,我得到一个“无法在基本类型char上调用(String)。

我不明白为什么这不起作用。

4 个答案:

答案 0 :(得分:7)

它将无法工作,因为您正在对原始类型为“char”的值调用类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);
    }
}

答案 1 :(得分:1)

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

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
    }
}

答案 2 :(得分:1)

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

`public class Main {

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

}`

&#34; StringUtils.countMatches&#34;的来源如下:

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;
}

答案 3 :(得分: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);

}

}