我对用java编码(或一般的编码)还比较陌生,我希望下面的代码只打印出最终结果(3),但它也会事先打印所有内容,一旦到达最后,它就会给我一个运行时错误
package programs;
public class practice2
{
public static void main(String [] args)
{
//create a program that counts spaces in a string
String sentence = "test if this works";
int count = 0;
for(int i = 0; i <= sentence.length(); ++i)
{
String space = sentence.substring(i, i+1);
if(space.equals(" "))
{
count = count + 1;
}
System.out.println(count);
}
}
}
4条答案
按热度按时间8fq7wneg1#
你有两个问题:
for循环正在遍历字符串的结尾
println必须在循环外才能运行一次
在for循环中,变量
i
必须在0(字符串中的第一个字符)和句子.length()-1(最后一个字符)之间迭代,因此必须将条件更改为:ma8fv8wu2#
要获得最终输出,需要将print语句移到
for
循环。对于运行时错误,将循环条件更改为i < sentence.length()
而不是i <= sentence.length()
因为索引从0开始,长度为1。j2cgzkjk3#
假设你有一根绳子
hello
那么长度是5。字符串从第0个索引开始,因此您应该考虑只迭代到小于长度,即在这种情况下<5是4[0到4]。因此,条件检查块将成为i <= sentence.length()
至i < sentence.length()
. 这也是异常的实际原因,我鼓励你阅读这篇文章为了检查空间,我们在java中有一个内置的方法,我们可以使用它https://docs.oracle.com/javase/7/docs/api/java/lang/character.html#iswhitespace(内景)
4xy9mtcn4#
问题
for循环一直到字符串的长度
应该什么时候
建议
空格只是一个字符,所以您不需要子字符串,只需检查像这样的字符
您的最终代码
或者如果你想要一个班轮
因为空格的数目就是单词的数目(我假设是用空格分开的,所以我们把句子分成这些部分)-1