前言
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法:
Scanner s = new Scanner(System.in);
一、常用方法
1.next方法
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
// 1、导包操作 (并不需要自己写的,以后通过工具进行导入更方便)
import java.util.Scanner;
/**
* @ClassName: ScannerDemo
* @Description: Scanner类, next()方法
* @author: Zh
* @date: 2024/4/15 20:43
*/
public class ScannerNextDemo {
public static void main(String[] args) {
// 2、得到一个键盘扫描器对象
Scanner sc = new Scanner(System.in);
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (sc.hasNext()) {
String str1 = sc.next();
System.out.println("输入的数据为:" + str1);
}
sc.close();
}
}
编译运行结果如下:
next方式接收:
Hello Java
输入的数据为:Hello
2.nextLine方法
nextLine():
- 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
// 1、导包操作 (并不需要自己写的,以后通过工具进行导入更方便)
import java.util.Scanner;
/**
* @ClassName: ScannerDemo
* @Description: Scanner类
* @author: Zh
* @date: 2024/4/15 20:43
*/
public class ScannerNextLineDemo {
public static void main(String[] args) {
// 2、得到一个键盘扫描器对象
Scanner sc = new Scanner(System.in);
// nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if (sc.hasNextLine()) {
String str2 = sc.nextLine();
System.out.println("输入的数据为:" + str2);
}
sc.close();
}
}
编译运行结果如下:
nextLine方式接收:
Hello Java
输入的数据为:Hello Java
3.常用方法
- nextBigDecimal():获取输入的BigDecimal类型的数字。
- nextBigInteger():获取输入的BigInteger类型的数字。
- nextBoolean():获取输入的Boolean类型,即true和false。
- nextByte():获取输入的Byte类型的数字。
- nextDouble():获取输入的Double类型的数字。
- nextFloat():获取输入的Float类型的数字。
- nextInt():获取输入的Int类型的数字。
- nextLong():获取输入的Long类型的数字。
- nextShort():获取输入的Short类型的数字
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
/**
- @ClassName: ScannerDemo
- @Description: Scanner类
- @author: Zh
- @date: 2024/4/15 20:43
*/
public class ScannerDemo {
public static void main(String[] args) {
// 2、得到一个键盘扫描器对象
Scanner input = new Scanner(System.in);
// nextBigDecimal()
System.out.println("请输入一个BigDecimal类型的数字");
BigDecimal bd = input.nextBigDecimal();
System.out.println("BigDecimal类型: " + bd);
// nextBigInteger()
System.out.println("请输入一个BigInteger类型的数字");
BigInteger bi = input.nextBigInteger();
System.out.println("BigInteger类型: " + bi);
// nextBoolean()
System.out.println("请输入一个Boolean类型");
boolean bl = input.nextBoolean();
System.out.println("Boolean类型: " + bl);
// nextByte()
System.out.println("请输入一个Byte类型的数字");
byte by = input.nextByte();
System.out.println("Byte类型: " + by);
// nextDouble()
System.out.println("请输入一个Double类型的数字");
double db = input.nextDouble();
System.out.println("Double类型: " + db);
// nextFloat()
System.out.println("请输入一个Float类型的数字");
float fl = input.nextFloat();
System.out.println("Float类型: " + fl);
// nextInt()
System.out.println("请输入一个Int类型的数字");
int i = input.nextInt();
System.out.println("Int类型: " + i);
// nextLong()
System.out.println("请输入一个Long类型的数字");
long l = input.nextLong();
System.out.println("Long类型: " + l);
// nextShort()
System.out.println("请输入一个Short类型的数字");
short s = input.nextShort();
System.out.println("Short类型: " + s);
}
}
编译运行结果如下:
请输入一个BigDecimal类型的数字
11.22
BigDecimal类型: 11.22
请输入一个BigInteger类型的数字
23
BigInteger类型: 23
请输入一个Boolean类型
true
Boolean类型: true
请输入一个Byte类型的数字
56
Byte类型: 56
请输入一个Double类型的数字
77.88
Double类型: 77.88
请输入一个Float类型的数字
88.99
Float类型: 88.99
请输入一个Int类型的数字
100
Int类型: 100
请输入一个Long类型的数字
120
Long类型: 120
请输入一个Short类型的数字
130
Short类型: 130
二、hasNextxxx()
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。
- hasNext():判断是否有输入。
- hasNextLine():判断是否有输入。
- hasnextBigDecimal():判断输入是否是BigDecimal类型。
- hasnextBigInteger():判断输入是否是BigInteger类型。
- hasnextBoolean():判断输入是否是BigBoolean类型。
- hasnextByte():判断输入是否是Byte类型。
- hasnextDouble():判断输入是否是Double类型。
- hasnextFloat():判断输入是否是Float类型。
- hasnextInt():判断输入是否是Int类型。
- hasnextLong():判断输入是否是Long类型。
- hasnextShort():判断输入是否是Short类型
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
/**
* @ClassName: ScannerDemo
* @Description: Scanner类
* @author: Zh
* @date: 2024/4/15 20:43
*/
public class ScannerDemo2 {
public static void main(String[] args) {
// 2、得到一个键盘扫描器对象
Scanner input = new Scanner(System.in);
// hasNextBigDecimal()
System.out.println("请输入一个BigDecimal类型的数字");
BigDecimal bd2;
if (input.hasNextBigDecimal()) {
bd2 = input.nextBigDecimal();
System.out.println("BigDecimal类型: " + bd2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextBigInteger()
System.out.println("请输入一个BigInteger类型的数字");
BigInteger bi2;
if (input.hasNextBigInteger()) {
bi2 = input.nextBigInteger();
System.out.println("BigInteger类型: " + bi2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextBoolean()
System.out.println("请输入一个Boolean类型");
boolean bl2;
if (input.hasNextBoolean()) {
bl2 = input.nextBoolean();
System.out.println("Boolean类型: " + bl2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextByte()
System.out.println("请输入一个Byte类型的数字");
byte by2;
if (input.hasNextByte()) {
by2 = input.nextByte();
System.out.println("Byte类型: " + by2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextDouble()
System.out.println("请输入一个Double类型的数字");
double db2;
if (input.hasNextDouble()) {
db2 = input.nextDouble();
System.out.println("Double类型: " + db2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextFloat()
System.out.println("请输入一个Float类型的数字");
float fl2;
if (input.hasNextFloat()) {
fl2 = input.nextFloat();
System.out.println("Float类型: " + fl2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextInt()
System.out.println("请输入一个Int类型的数字");
int i2;
if (input.hasNextInt()) {
i2 = input.nextInt();
System.out.println("Int类型: " + i2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextLong()
System.out.println("请输入一个Long类型的数字");
long l2;
if (input.hasNextLong()) {
l2 = input.nextLong();
System.out.println("Long类型: " + l2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
// hasNextShort()
System.out.println("请输入一个Short类型的数字");
short s2;
if (input.hasNextShort()) {
s2 = input.nextShort();
System.out.println("Short类型: " + s2);
}else {
// 输入错误的信息
System.out.println("输入错误!");
}
}
}
编译运行结果如下:
请输入一个BigDecimal类型的数字
11.1
BigDecimal类型: 11.1
请输入一个BigInteger类型的数字
2
BigInteger类型: 2
请输入一个Boolean类型
false
Boolean类型: false
请输入一个Byte类型的数字
22
Byte类型: 22
请输入一个Double类型的数字
33
Double类型: 33.0
请输入一个Float类型的数字
44.5
Float类型: 44.5
请输入一个Int类型的数字
5
Int类型: 5
请输入一个Long类型的数字
66
Long类型: 66
请输入一个Short类型的数字
77
Short类型: 77