我想计算字符串中的空格:
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)。
我不明白为什么这不起作用。
答案 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)
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);
}
}