pushback流的例子

pushback流 有PushbackInputStream和PushbackRead。

 

例子:

 

public class SequenceCount {
	public static void main(String[] args) throws IOException {
		PushbackInputStream in = new PushbackInputStream(System.in);
		
		int max  = 0; 	// longest sequence found
		int maxB = -1;	// the byte in that sequence
		int b;			// current byte in input
		
		do {
			int cnt;
			int b1 = in.read(); // 1st byte in sequence
			for(cnt = 1; (b = in.read()) == b1; cnt++) {
				continue;
			}
			if(cnt > max) {
				max = cnt; // remember length
				maxB = b1; // remember which byte value
			}
			in.unread(b); // pushback start of next sequence
		} while(b != -1); // until we hit end of input
		
		System.out.println(max + " bytes of " + (char)maxB);
	}
}

 

 

书上的一个例子;

总结:

1,pushback适用于“词法的扫描”;

2,上面的例子就是找System.in中输入的连续的重复的字符,只有读了之后,才知道不连续重复了。需要回退。

3,在eclipse中不好测试,没法System.in结束,需要在cmd中运行,然后“ctrl+c”结束。打开cmd,切换到eclipse项目的bin目录下面,用java + package.class的名字运行,主要要是class的全路径。

4,读入的是int,如是8的话,assic编码maxB成了58了。需要char强制转换一下,成了8.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值