Java Scanner 类的主要方法与例子

java.util.Scanner 在读取流的优点:
1、能直接转换为所有的数据类型。
2、可以指定分隔符。

public final class Scanner
extends Object
implements Iterator, Closeable

构造方法说明
Scanner(File source)接收文件
Scanner(InputStream source)接收输入流
Scanner(Readable source)
Scanner(String source)

主要方法:

返回类型方法说明参数
booleanpublic boolean hasNext()是否存在数据,返回 true 时有数据。类中有一组hasNextBoolean()、 hasNextDouble()等等判断是否有各种类型数据的方法,可以直接对各类型判断。
Stringpublic String next()提取数据。返回String。类中包含有一组对各类型数据读取的方法,如: nextBoolean()、nextFloat()、nextInt()。。。
Scannerpublic Scanner useDelimiter(String pattern)设置分隔符String pattern 指定字符串分隔符。
Scannerpublic Scanner useDelimiter(Pattern pattern)设置一个正则表达式作为分隔符

例1:使用 Scanner 接收键盘输入的信息 。

import java.util.Scanner;

/**
 * @author 
 *
 */
public class ScannerDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根

		Scanner scan = new Scanner(System.in);
		System.out.print("请输入年龄:");
		if (scan.hasNextInt()) { // 判断输入的值是否是整数类型,如果是提出出求和显示输入值。
			int age = scan.nextInt();
			System.out.println("年龄是:" + age);

		} else {
			System.err.println("需要输入一个整数年龄。");
		}

		scan.close(); // 关闭

	}

}


例2:使用正则判断输入的日期是否正确


import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;

/**
 * @author
 *
 */
public class ScannerReadDateDemo {

	/**
	 * @param args
	 * @throws ParseException
	 */
	public static void main(String[] args) throws ParseException {
		// TODO 自动生成的方法存根

		Scanner scan = new Scanner(System.in);
		System.out.print("请输入您的生日:");
		String str = null;
		Date birthday = null; //生日

		if (scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) {// 正则验证是否为日期

			str = scan.next("^\\d{4}-\\d{2}-\\d{2}$");// 接收字符串
			birthday = new SimpleDateFormat("yyyy-MM-dd").parse(str);

			System.out.println(birthday);

		} else {
			System.err.println("输入的日期格式错误!");
		}

		scan.close();
	}

}

例3:分行读取一个参数文本文件:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

/**
* 分行读取一个参数文本文件
 * @author 
 *
 */
public class ScannerReadFileDemo {

	/**
	 * @param args
	 * @throws FileNotFoundException
	 */
	public static void main(String[] args) throws FileNotFoundException {
		// TODO 自动生成的方法存根

		File file = new File("d:" + File.separator + "Java" + File.separator + "temp" + File.separator + "myinfo.txt");
		// 判断文件是否存在,如果不存在退出!
		if (!file.exists()) {// 判断文件是否存在
			System.out.println("指定的“" + file.getName() + "”文件不存在,退出!");
			return;
		}

		Scanner scan = new Scanner(file); // 实例代 Scanner 扫描器
		scan.useDelimiter("\r\n"); // 以换行符作为分隔符
		// 循环读出文件中的每一行数据
		while (scan.hasNext()) {
			System.out.println(scan.next());  // 以分隔符读取一行,直到最尾没有数据为止。
		}

		scan.close();  // 关闭

	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值