Scanner类的简单学习

Scanner类:简单文本扫描器

在我们实际的开发过程中,使用Scanner来键盘录入,那么怎么才能在eclipse中实现键盘录入呢?

1)创建键盘录入对象

    Scanner sc = new Scanner(System.in);

2)导包(因为Scanner类是在java.util包下)

    import java.util.Scanner;(快捷键:Ctrl+shift+o)

3)接收数据

    XXX 变量名 = sc.nextXXX();

查看API文档,可以发现Scanner类中有public Scanner(InputStream source)这个构造方法,这表示Scanner以输入流的形式录入数据的,其中InputStream是指字节输入流,我们常用InputStream  in = System.in ; 表示底层执行返回的是一个字节输入流(标准输入流)

举个例子感受一下Scanner的用法:

public class ScannerDemo {
	
	public static void main(String[] args) {
		
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//接收数据
		int a = sc.nextInt() ;
		
		System.out.println("a:"+a);
	}
}

这样就实现了键盘录入的功能。

在Scanner类中它提供一个判断功能:

public boolean hasNextXXX():当前扫描器判断是否有下一个可以录入的XXX类型数据

如果录入的数据和接收的数据类型不一致会抛出一个异常:java.util.InputMismatchException:录入的数据和接收的数据类型不匹配异常

判断功能可以这样使用:

Scanner sc = new Scanner(System.in) ;
		System.out.println("请输入一个数据:");
		if(sc.hasNextInt()) {
			int num = sc.nextInt() ;
			System.out.println("num:"+num);
		}else {
			System.out.println("您输入的数据类型不匹配...");
		}

这样就实现了只有当输入和接收的数据都是int时才会输出该数据,否则就输出类型不匹配

这里有一个需要注意的点:

当键盘录入两个int类型的数据,分别输出,没有问题

当键盘录入两个String类型的数据,分别输出:没有问题

先录入一个String类型的数据,再录入int类型的数据,没有问题

   先录入一个int类型的数据,再录入String类型的数据,就会出现一个问题,第二个数据是字符串类型,又由于录入下一个数据要"空格",但空格本身是一个字符串,所以String类型的值并没有录入,那么该如何解决这个问题呢?这时就需要重新创建键盘录入对象才能正确录入:

                Scanner sc = new Scanner(System.in) ;
		int a = sc.nextInt() ;
		Scanner sc2 = new Scanner(System.in) ;
		String b = sc2.nextLine() ;
		System.out.println("a:"+a+",b:"+b);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值