Scanner用法

Scanner要想通过控制台进行输入,首先要构造一个Scanner对象,它附属于"标准输入流"System.in。
Scanner in = new Scanner(System.in);
Scanner类各种方法:
(1)读入一行字符串,行中可含有空格:
String line = in.nextline();
读入一个单词
String word = in.next();
(2)读入一个整数:
int i = in.nextInt();
(3)读入一个浮点数:
double f = in.nextDouble();
(4)判断是否继续读入数据:
while(in.hasnext())
{
}

 

 

Scanner类从字面上讲是“扫描”的意思,它把给定的字符串解析成Java的各种基本数据类型primitive types,
用于分解字符串的默认的分隔符是空格,当然也可以定制。
例如:Scanner sc = new Scanner(System.in);其构造函数参数是待解析的输入源,可以是File对象、Stream对象,
或是一个String,然后还有java.lang.Readable对象。

定制分隔符的方法是sc. useDelimiter(Pattern),然后使用while循环和sc.next()来依次取出Scanner解析后的元素,
还可以特定取sc.nextInt()/ nextLong()/ nextShort()/ nextDouble()等等。

最后,不管输入源是不是Stream,都请执行sc.close()方法,关闭Scanner,
它同时会关闭其输入源(the source implements the Closeable interface)。
import java.io.*;
import java.util.*;

public class Main
{
public static void main(String args[]) throws Exception
{
   Scanner sc =
   new Scanner(new BufferedReader(new FileReader("words.txt")));
   //sc.useDelimiter("t");
   while(sc.hasNext())
   {
   System.out.println(sc.next());
}
sc.close();
}
}

如果words.txt文件中的内容是:
So she went into the graden.
A minute later, she left.

那么结果如下,整个字符串按空格来分为了多个String对象
So
she
went
into
the
graden.
A
minute
later,
she
left.

如果sc.useDelimiter("t"),那么结果按字母t来分解,如下:
So she wen
in
o
he graden.
A minu
e la
er, she lef
.


发现被定义为分隔符的字母t被消除了,不作为结果的一部分。
当然也可以用"/n"作为分隔符,输出就是一行行地输出。
注:
sc.next()是从结果集中连续取值,如果要从一串字符中取出间插在中间的数字,那么使用sc.nextInt(),
但是如果结果集中的下一个元素不是int类型的话就会抛出异常,要达到这一目的,在循环中添加if条件判断即可,如下:

While(sc.hasNext()){

if(sc.hasNextInt()){ // sc.hasNextShort()/hasNextDouble/…等各种基本数据类型

//做事件…

}

else{

next();//直接跳过

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值