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

时间:2015-09-26 03:04:30

标签: 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);
    }
}

1 个答案:

答案 0 :(得分:2)

你应该使用

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

而不是

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

数组之类的字符串是从0开始的,因此最后一个索引是 length() - 1