【JavaSE】Scanner中的输入函数

        我们经常要对一些数据类型进行输入,如byte、int、float、double  或者 String、char. Scanner提供了输入的方法,常用的分为两种:next() 和 nextLine();需要注意的是,两种方法的处理机制不同.

一、next()

        next() 会读入指定类型的数据,遇到空白字符结束读取(不会读入空白字符:table,空格,回车),回车会留在控制台。

next()有如下常用方法:

  • next(),读取输入的 String 类型.
  • nextByte(),读取输入的 byte 类型.
  • nextInt(),读取输入的 int 类型.
  • nextFloat(),读取输入的 float 类型.
  • nextDouble(),读取输入的 double 类型.
Scanner in = new Scanner(System.in);

// String类型
String s = in.next(); 

// byte类型
byte b = in.nextByte();

// int类型
int n = in.nextInt();

// float类型
float f = in.nextFloat();

// double类型
double d = in.nextDouble();

当输入的类型不符合时,会进行自动类型提升,无法自动类型提升则会报错.

此外,next中没有可以输入char类型的函数.可以通过String类型来接受,再转为char类型,如

        Scanner in = new Scanner(System.in);
		String s = in.next();
		char ch = s.charAt(0);

二、nextLine()

        这种就只有它本身:nextLine(),它会读取一行包含空格在内的String类型数据,遇到回车结束,并且回车不会留在控制台。

Scanner in = new Scanner(System.in);
String s = in.nextLine();

三、next()和nextLine两种类型混用

        使用next()会把回车留在控制台,留在控制台的回车被之后的nextLine()读取就会使nextLine()还末读取到数据就已经结束读取了。

Scanner in = nwe Scanner(System.in);
int n = in.nextInt(); // 读入数据留下回车符在控制台中结束
String s = in.nextLine(); // 读入控制台的回车符结束

  解决方法:

  1. 依然一起使用,在next()之后,用一个额外的nextLine()读取控制台中的回车符.
  2. 只使用nextLine(),当想要读入其它类型数据时,使用包装类中的方法转化为该类型.
Scanner in = new Scanner(System.in);

// int类型
int n = Integer.parseInt(in.nextLine());

// double类型
double d = Double.parseDouble(in.nextLine()); // ...其它类似

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

り澄忆秋、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值