句子中的字母计数不计算最后一个单词
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 件事你应该解决。
在你的for循环中,你的条件是i<exp.length()-1
。为什么?您显然还想包括最后一个字符(即 charAt(exp.length() -1)
),因此您的条件应该是 i <= exp.length() -1
或 i < exp.length()
.
你的逻辑是遇到空格就数字母。但是在数完最后一个字之后,你没有空格。这就是为什么它不计算最后一个字的原因。
要修复,请在循环后将 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();
但两者都会做同样的事情。
我是 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 件事你应该解决。
在你的for循环中,你的条件是
i<exp.length()-1
。为什么?您显然还想包括最后一个字符(即charAt(exp.length() -1)
),因此您的条件应该是i <= exp.length() -1
或i < exp.length()
.你的逻辑是遇到空格就数字母。但是在数完最后一个字之后,你没有空格。这就是为什么它不计算最后一个字的原因。
要修复,请在循环后将 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();
但两者都会做同样的事情。