我是java编程的新手。此片段计算每个单词中没有字母并将其存储为字符串(不包括空格),但它只计算直到"大"并且不计算"容器"中的字母数。
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);
}
}
预期产量:314157
当前输出:31415
答案 0 :(得分:3)
你应该解决两件事。
在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);
答案 1 :(得分:0)
String counter = "";
String[] array = exp.split(" ");
for(String s: array){
counter += Integer.toString(s.length);
}
第二行将String拆分为一个字符串数组(使用String中每个空格实例拆分)。循环遍历数组中的每个单独的String,并将其长度添加到计数器String。
最好使用StringBuilder
而不是+=
附加到字符串。
StringBuilder sb = new StringBuilder();
String[] array = exp.split(" ");
for(String s: array){
sb.append(Integer.toString(s.length));
}
String counter = sb.toString();
但两者都会这样做。