java统计Scanner输入的行数,制表位数以及空格数

最近在学C语言,每写一个C语言程序,就再写一个java的实现,发现简单的小程序,还是C语言简单啊。。。java写起来要复杂繁琐的多。。

说到统计,通常的需求是统计一篇文章的各种信息数据。但神需求无处不在,只要技术使用正确就一定可以解决的。

直接上代码。

import java.util.*;
class  Test1
{
	public static void main(String[] args)
	{
		Scanner sc =new Scanner(System.in);
		String str=sc.nextLine();
		int n=0,m=0,p=0;
		while(sc.hasNext()&&!str.equals("EOF"))
		{
			++n;
			for(int i=0;i<str.length();i++)
			{
				if(str.charAt(i)=='\t')
				++m;
				if(str.charAt(i)==' ')
				++p;
			}
			str=sc.nextLine();	
		}
		System.out.println("行数为"+n+"行,制表位有"+m+"个。空格有"+p+"个");
	}
}
另外判断制表位和空格的时候也可以通过str.indexOf("\t")和str.indexOf(" ")

运行结果如下:


至于为啥在EOF后面还得输入任意字符呢?

因为程序一开始就是定义了一个Scanner接受用户输入,虽然之前的EOF让程序退出统计的那个while循环了,但由于输入完EOF后,我们又敲了一个回车,所以程序会再接受一次输入才能往下运行,输出统计数据。

这个程序也可以用上正则表达式,但有点高射炮打蚊子的感觉喽~

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值