Readable接口中的read()方法实现了将字符串读入charBuffer中,但是只有在需要输出的时候才会调用。
Scanner是文本扫描器类,利用Scanner扫描并输出charBuffer中的内容的顺序:以hasNext()方法为例:第一次调用hasNext(),由于此时charBuffer并无内容,等待输入,hasNext()方法阻塞,调用并执行read()方法,执行完read()方法,根据read方法的返回值来确定是否hasNext()的返回值是true或者false:若read()返回值不为-1,则认为hasNext()为true,并且继续调用read()方法;若read()返回值为-1,则认为hasNext()为false,不再调用read()方法。
另外,在输出时是根据下一个空格标记(cb.append(" "))为准,未读到空格标记之前,无论调用多少次read()方法,都不会输出,直到read()f方法返回-1或者读到空格标记,就会输出之前很多次通过read()方法加到charBuffer的字符串。
import java.nio.CharBuffer;
import java.util.Scanner;
class A implements Readable{
private static final char[] lowers="ABCDEFGHIJKLMOPQRSTUVWXYZ".toLowerCase().toCharArray();
private int count;
private int j = 1;
public A(int count) {
this.count = count;
}
@Override
public int read(CharBuffer cb) {
System.out.println("第"+j+"次进入read()方法");
//cb.append("aaa");
//cb.append(" ");
if (count-- == 0) {
return -1;
}
if(j==1){
System.out.println("第1次");
cb.append(" ");
//cb.append(lowers[0]);
j++; return 1;
}
if(j==2){System.out.println("第2次");cb.append(lowers[0]);j++; return 1;}
if(j==3){System.out.println("第3次");cb.append(lowers[0]);j++; return 1;}
if(j==4){System.out.println("第4次");cb.append(lowers[0]);j++; cb.append(" "); return 1;}
return 2;
}
}
public class MyScanner {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(new A(4));
//System.out.println(scan.hasNext()+" aaaaaaa");
while(scan.hasNext()){
System.out.println(scan.next());}
}
}
分享到:
相关推荐
德国赫优讯(Hilscher)基于netX技术的EtherNetIP_Scanner协议接口手册pdf,德国赫优讯(Hilscher)基于netX技术的EtherNetIP_Scanner协议接口手册
IIS,Scanner利用IIS漏洞写shell . IIS,Scanner利用IIS漏洞写shell IIS,Scanner利用IIS漏洞写shell
ASML Scanner 光刻机介绍
sonar-scanner-2.8
sonar-scanner
Telnet scanner in network
Scanner与switch和三种循环。
IISPutScanner1.3原版IISPutScanner1.3原版IISPutScanner1.3原版
rtlsdr scanner code for sldr
Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序...
Scanner类的用法2007-03-25 14:41Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
Java Scanner File PrintWriter使用实例
Acunetix Web Vulnerability Scanner,Acunetix Web Vulnerability Scanner,Acunetix Web Vulnerability Scanner
BarcodeScanner安卓二维码扫描源码
proxy scanner tools developed on Java, scanning proxy in port 8080, 3000 thread every time.
扫描工具Web_Scanner
vnc_scanner_gui
明基BenQ扫描仪SCANNER 5560(for XP驱动)
acunetix web vulnerability scanner
sonar-scanner-2.6.1