Java_IO_Scanner类

12 篇文章 2 订阅

一、Scanner简介

Scanner类可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,存在于java.util包中。

二、常用方法:

a)        public boolean hasNext(Patternpattern)——判断输入的数据是否符合指定的正则

b)        public boolean hasNexInt()——判断输入的是否是整数

c)        public boolean hasNextFloat()——判断输入的是否是小数

d)        public String next()——接收内容

e)        public String next(Patternpattern)——接收内容,进行正则验证

f)         public int nextInt( ) ——接收数字

g)        public float nextFloat( )——接收小数

h)        public ScanneruseDelimiter(String pattern )——设置读取的分隔符

三、示例

示例一:

用Scanner接收键盘输入数据:

public class Test {
	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in); // 从键盘接收数据
		System.out.print("输入数据:");
		String str = sc.next(); // 接收数据
		System.out.println("输入的数据为:" + str);
	}

}

注意:以上输入数据代码实际上是存在问题的,如果输入数据之间存在了空格,则会以空格为分割符,如果要想输入空格的话,则就必须修改分割符,将分割符变为“\n”

修改分割符:

public class Test {
	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in); // 从键盘接收数据
		System.out.print("输入数据:");
		sc.useDelimiter("\n") ; //设置读取的分割符
		String str = sc.next(); // 接收数据
		System.out.println("输入的数据为:" + str);
	}

}

示例二:

通过Scanner接收整数或小数,并校验。

public class Test {
	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in); // 从键盘接收数据
		int i = 0 ;
		float f= 0.0f;
		System.out.println("输入整数:");
		if(sc.hasNextInt()){//判断输入的是否是整数
			i= sc.nextInt();//接收数据
			System.out.println("整数是:"+i);
		}else{
			System.out.println("输入的不是整数");
		}
		System.out.println("输入小数");
		if(sc.hasNextFloat()){//判断输入的是否为小数
			f= sc.nextFloat();//接收数据
			System.out.println("小数数据:"+f);
		}else{
			System.out.println("输入的不是小数");
		}
	}

}

注意:Scanner类对于日期型的数据却无法接收。

           如果想接收Date类型的数据,则只能通过字符串转型。

验证:publicString hasNext(Pattern)

接收:publicString next(String pattern)

public class Test {
	public static void main(String[] args) throws IOException {

		Scanner scan = new Scanner(System.in); // 从键盘接收数据
		String str = null;
		Date date = null;
		System.out.print("输入日期(yyyy-MM-dd):");
		if (scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) { // 判断
			str = scan.next("^\\d{4}-\\d{2}-\\d{2}$"); // 接收
			try {
				date = new SimpleDateFormat("yyyy-MM-dd").parse(str);
			} catch (Exception e) {
			}
		} else {
			System.out.println("输入的日期格式错误!");
			return;
		}
		System.out.println(date);
	}

}

示例三:从文件中读取信息

public class Test {
	public static void main(String[] args) throws IOException {

		File f = new File("E:\\test.txt"); // 指定操作文件
		Scanner scan = null;
		try {
			scan = new Scanner(f); // 从键盘接收数据
		} catch (Exception e) {
		}
		String str = null;
		if (scan.hasNext()) {
			str = scan.next();
		}
		System.out.println("文件内容为:" + str);

	}

}

注意:此程序只能读取第一行数据,因为存在换行,所以读取一行数据,就认为读完了。

修改代码(考虑换行的功能):

public class Test {
	public static void main(String[] args) throws IOException {

		File f = new File("E:\\test.txt"); // 指定操作文件
		Scanner scan = null;
		try {
			scan = new Scanner(f); // 从键盘接收数据
		} catch (Exception e) {
		}
		StringBuffer str = new StringBuffer();
		while (scan.hasNext()) {
			str.append(scan.next()).append('\n'); // 取数据
		}
		System.out.println("文件内容为:" + str);
	}

}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值