句子中的字母计数不计算最后一个单词

Letter count in sentence not counting last word

我是 java 编程新手。此代码段计算每个单词中的字母数并将其存储为字符串(不包括空格)但它只计算到 "large" 而不是计算 "container".

中的字母数
class piSong
{
    String pi = "31415926535897932384626433833";
    public void isPiSong(String exp)
    {
        int i,count=0;
        String counter = "";
        String str;
        System.out.println(exp.charAt(25));
        for(i=0;i<exp.length()-1;i++)
        {
            if(Character.isWhitespace(exp.charAt(i)))
            {   str = Integer.toString(count);
                counter += str;
                count = 0;
                continue;
            }
            count++;

        }
        System.out.println(counter);
    }
}
public class isPiSong{
    public static void main(String[] args)
    {
        piSong p = new piSong();
        String exp = "can i have a large container";
        p.isPiSong(exp);
    }
} 

预计output:314157

当前输出:31415

有 2 件事你应该解决。

  1. 在你的for循环中,你的条件是i<exp.length()-1。为什么?您显然还想包括最后一个字符(即 charAt(exp.length() -1)),因此您的条件应该是 i <= exp.length() -1i < exp.length().

  2. 你的逻辑是遇到空格就数字母。但是在数完最后一个字之后,你没有空格。这就是为什么它不计算最后一个字的原因。

要修复,请在循环后将 count 附加到 counter

// Loop ends here
counter += count;
System.out.println(counter);
String counter = "";
String[] array = exp.split(" ");
for(String s: array){
  counter += Integer.toString(s.length);
}

第二行将字符串拆分为字符串数组(使用字符串中 space 的每个实例进行拆分)。循环遍历数组中的每个单独的字符串,并将其长度添加到计数器字符串。 最好使用 StringBuilder 而不是 += 来附加到字符串。

StringBuilder sb = new StringBuilder();
    String[] array = exp.split(" ");
    for(String s: array){
      sb.append(Integer.toString(s.length));
    }
String counter = sb.toString();

但两者都会做同样的事情。