java—如何在修复运行时错误的同时只打印最终结果

ldioqlga  于 2021-06-26  发布在  Java
关注(0)|答案(4)|浏览(263)

我对用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);
        }
    }
}
8fq7wneg

8fq7wneg1#

你有两个问题:
for循环正在遍历字符串的结尾
println必须在循环外才能运行一次
在for循环中,变量 i 必须在0(字符串中的第一个字符)和句子.length()-1(最后一个字符)之间迭代,因此必须将条件更改为:

i < sentence.length()
ma8fv8wu

ma8fv8wu2#

要获得最终输出,需要将print语句移到 for 循环。对于运行时错误,将循环条件更改为 i < sentence.length() 而不是 i <= sentence.length() 因为索引从0开始,长度为1。

j2cgzkjk

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(内景)

String sentence = "test if this works";
        int count = 0;
        for (int i = 0; i < sentence.length(); ++i) {
            final char character = sentence.charAt(i);
            if (Character.isWhitespace(character)) {
                System.out.println("Space encountered at index: " + i);
                count = count + 1;
                System.out.println(count);
            }
        }

        System.out.println("Total spaces in sentence : " + count);
4xy9mtcn

4xy9mtcn4#

问题
for循环一直到字符串的长度

i<=sentence.length()

应该什么时候

i<sentence.length()

建议
空格只是一个字符,所以您不需要子字符串,只需检查像这样的字符

char ch=sentence.charAt(i);
if(ch==' ')//do something

您的最终代码

String sentence = "test if this works";

    int count = 0;
    for(int i = 0; i < sentence.length(); i++)
    {
        char ch=sentence.charAt(i);
        if(ch==' ')
        {
            count++;
        }
    }
    System.out.println(count);

或者如果你想要一个班轮

int count=sentence.trim().split(" ").length-1;

因为空格的数目就是单词的数目(我假设是用空格分开的,所以我们把句子分成这些部分)-1

相关问题