一、Scanner概述
和Python的input()函数类似,Java提供了Scanner类供用户从控制台输入。我们使用import java.util.Scanner导入Scanner类,就可以实现获取用户输入的目的了。
1、导入Scanner类
import java
.util
.Scanner
;
2、创建 Scanner 对象
下面是创建 Scanner 对象的基本语法:
Scanner sc
= new Scanner(System
.in
);
3、控制台接收输入
String str1
= sc
.next();
String str2
= sc
.nextLine();
4、判断是否还有输入
(1)判断是否还有输入的语法
sc
.hasNext();
sc
.hasNextLine();
(2)nextLine()和next()的区别
next()一定要读取到有效字符才可以结束输入,对输入的有效字符开头的空白会自动去除,并将有效数据中间的空格看作为分隔符或者结束符。next接收的输入不能有空格,否则空格后的数据无法接收到。nextLine()以Enter为结束符,包括输入的有效字符前面和中间的空格。
5、关闭接收
sc
.close();
二、Scanner类应用
1、接收单个输入
实例1:用next和nextLine接收输入,查看区别
使用next接收输入
import java
.util
.Scanner
;
public class ScannerDemo {
public static void main(String
[] args
) {
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("next获取输入:");
String str1
= sc
.next();
System
.out
.println("next获取输入的打印信息:"+str1
);
sc
.close();
}
}
Console
:
next获取输入
:
ccl
00
next获取输入的打印信息
:ccl
这里我们可以看见,输入的信息有空格,空格后的数据就没有被接收到。
使用nextLine接收输入
import java
.util
.Scanner
;
public class ScannerDemo {
public static void main(String
[] args
) {
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("next获取输入:");
String str1
= sc
.next();
System
.out
.println("next获取输入的打印信息:"+str1
);
sc
.close();
}
}
Console
:
nextLine获取输入
:
ccl
00
nextLine获取输入的打印信息
:ccl
00
使用nextLine接收输入,空格后的输入一样可以被接收到。
实例2:使用hasNext()和hasNextLine()判断是否还有输入
import java
.util
.Scanner
;
public class ScannerDemo {
public static void main(String
[] args
) {
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("next获取输入:");
if(sc
.hasNextLine()) {
String str1
= sc
.nextLine();
System
.out
.println("next获取输入的打印信息:"+str1
);
}
sc
.close();
}
}
next获取输入
:
ccl
001
next获取输入的打印信息
:ccl
001
2、接收多个输入
我们可以使用while循环结构,实现输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,并通过输入非数字来结束输入并输出。如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
实例3:使用while循环实现多个输入
import java
.util
.Scanner
;
public class ScannerDemo {
public static void main(String
[] args
) {
Scanner scan
= new Scanner(System
.in
);
double sum
= 0;
int m
= 0;
while (scan
.hasNextDouble()) {
double x
= scan
.nextDouble();
m
= m
+ 1;
sum
= sum
+ x
;
}
System
.out
.println(m
+ "个数的和为" + sum
);
System
.out
.println(m
+ "个数的平均值是" + (sum
/ m
));
scan
.close();
}
}
Console
:
11
12
13
14
mm
4个数的和为
50.0
4个数的平均值是
12.5
实例4:使用if条件判断判断输入类型
import java
.util
.Scanner
;
public class ScannerDemo {
public static void main(String
[] args
) {
Scanner scan
= new Scanner(System
.in
);
int i
= 0;
float f
= 0.0f;
System
.out
.print("输入整数:");
if (scan
.hasNextInt()) {
i
= scan
.nextInt();
System
.out
.println("整数数据:" + i
);
} else {
System
.out
.println("输入的不是整数!");
}
System
.out
.print("输入小数:");
if (scan
.hasNextFloat()) {
f
= scan
.nextFloat();
System
.out
.println("小数数据:" + f
);
} else {
System
.out
.println("输入的不是小数!");
}
scan
.close();
}
}
Console
:
输入整数:
22
整数数据:
22
输入小数:
35.5
小数数据:
35.5
三、小结