Java中的Scanner类

我们在牛客网上做题时会经常用到Scanner类,可能会因为没有正确使用Scanner类导致程序就无法通过,因此我对Java中的Scanner类及其使用进行了总结。

创建Scanner对象的基本语法:

Scanner input = new Scanner(System.in);

创建好对象后通过Scanner类的方法进行读取。其中方法nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、next()等都称为标记读取方法。因为他们会读取用分隔符隔开的标记,默认分隔符是空格。可以使用useDelimiter(String regex)方法设置新的分隔符模式。一个标记方法首先跳过任意分隔符(默认为空格),然后读取一个以分隔符结束的标记。

标题重点讲述next()和nextLine()方法

1、next()和nextLine()方法都会读取一个字符串。但是两者又有区别:
next()方法:

public class Main{
	public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String str = in.next();
    System.out.println(str);
	}
}

运行结果:只打印了hello
在这里插入图片描述
nextLine()方法:

public class Main{
	public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String str = in.next();
    System.out.println(str);
	}
}

运行结果:hello world
在这里插入图片描述
next()和nextLine()的区别:
next()

  • next()方法将输入有效字符之前的任意分隔符(默认空格)自动去掉。
  • 输入有效字符之后的分隔符为结束符。

nextLine()

  • 以Enter为结束符,返回回车之前的所有字符,包括空白。
  • 可以输出带有空格的字符串。

2、为了避免输入错误,不要在nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、next()之后使用nextLine()。

public class Main{
	public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int value = in.nextInt();
    String str = in.nextLine();
    int ret = in.nextInt();
    System.out.println(value);
    System.out.println(str);
    System.out.println(ret);
	}
}

键盘输入23回车,34回车,45回车,
运行结果:
在这里插入图片描述
由运行结果我们可以发现我们输入23回车,34回车后结果就输出了。输出结果多了一行空行。原因是标记读取方法nextInt()读取23,然后在分隔符处停止(这里的分隔符为回车键)。next Line()方法会在读取分隔符之后结束。然后返回行分隔符之前的字符串,行分隔符之前没有字符,所以str是空的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值