Scanner 的进一步学习和与StreamTokenizer的学习

本文详细介绍了Java中Scanner和StreamTokenizer类的功能与用法,包括如何通过构造函数接收不同类型的输入源,并通过实例代码演示了如何读取整型值、字符串以及使用结束符进行文本解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scanner:
Scanner的构造函数有5个重载版本,分别接受一个实参,实参的类型可以是下面的任一种:

InputStream,File,ReadableByteChannel,Readable,String

写了一个测试程序,如下:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in) ;
//scan.useDelimiter("exit");
int count = scan.nextInt() ;
String str = scan.nextLine();
System.out.println(str) ;
}
不知何原因,网上搜索了一下,很过这方面的讲解,先罗列如下:以为scan.nextInt(),只是读取了一个整型值,在键盘上敲击的硬回车符并没有被count接受,所以造成的结果就是剩余一个回车符,当程序进行到scan.nextLine()时,str只是接受了一个回车符。
当使用String str = scan.next() 时,需要人为指定一个结束符,此时可以用到,scan.useDelimiter("exit") ;表示字符串读到到此第一个“exit”处结束。
String str = scan.nextLine() ;读入一行字符串。

StreamTokenizer:

字段摘要:

double navl ------>如果当前标记是一个数字,则此字段将包含该数字的值。

String sval ------>如果当前标记是一个文字标记,则此字段包含一个给出该文字标记的字符的字符串。

static int TT_EOF ------>指示已读到流末尾的常量。

static int TT_EOL ------->指示已读到行末尾的常量。

static int TT_NUMBER------->指示已读到一个数字标记的常量。

static int TT_WORD ------->指示已读到一个文字标记的常量。

int ttype -------->在调用 nextToken() 方法之后,此字段将包含刚读取的标记的类型。

TheStreamTokenizerclass takes an input stream and parses it into "tokens", allowing the tokens to be read one at a time,这些符号的拆分是按照空格来确定的。

public static void main(String[] args) {
int type;
StreamTokenizer tok = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));
System.out.println("please input :");
try {
while((type=tok.nextToken())!=tok.TT_EOL){
if(type==tok.TT_NUMBER){
System.out.println(tok.nval);
}else if(type==tok.TT_WORD){
if(tok.sval.equalsIgnoreCase("exit"))
{
System.exit(1);
}
System.out.println(tok.sval);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
总结:Scanner 和StreamTokenizer的区别如上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值