java - 在没有文件处理的情况下计算java中的空格、制表符和新行

标签 java exception runtime bufferedreader counting

这是我编写的代码,用于计算用户输入的字符串中空格、制表符和换行符的数量(新行用句号(“.”)标记),并且我在没有文件的情况下执行此操作处理。 这段代码在运行时抛出字符串越界异常,我无法弄清楚为什么。请帮忙。

import java.io.*;
class Specialchars
{
    public static void main(String arg[]) throws IOException
    { 
        BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter one or more lines");
        String s=obj.readLine();

        int count1=0,count2=0,count3=0;

        for(int i=0; i<=s.length(); i++)
        {
            char ch=s.charAt(i);
            if(ch==' ')
            {
                count1++;
            }
            else    
            if(ch=='\t')
            {
                count2++;
            } 
            else    
            if(ch=='.')
            {
                count3++;
            }
        }
        System.out.println("The number of blank spaces is = "+count1);
        System.out.println("The number of tabs is = "+count2);
        System.out.println("The number of new lines is = "+count3);
    }
}

最佳答案

你应该使用

for(int i=0; i < s.length(); i++)

而不是

for(int i=0; i<=s.length(); i++)

像数组这样的字符串是从0开始枚举的,所以最后一个索引是length() - 1

关于java - 在没有文件处理的情况下计算java中的空格、制表符和新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793209/

相关文章:

java - 如何弹出并返回堆栈顶部的字符?

haskell - 如何在 Haskell 中捕获任意异常?

exception - Kotlin/Android – 带有 lambda 的数据类中的 KotlinReflectionInternalError

algorithm - 运行时间 : Bounds vs Case

java - 已签名的 Java Applet 在连接到 Web 服务时抛出安全异常

java - 如何创建有效的自定义 JSON 解析异常映射?

java - 如何使用 lambda 表达式检查元素是否存在?

.net - System.IO.File.Move 给出异常 "The file exists"

java - 使用 java Runtime.exec() 执行 yum 安装程序并捕获其下载进度

android - 在运行时创建 NinePatch/NinePatchDrawable