pushbackストリームの例

1299 ワード

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になりました.