前言
Scanner模块几乎无处不在,它将人与计算机之间建立了一个交流通道,Scanner的英文意思是扫描仪的意思,顾名思义就是将我们输入电脑的数据接入我们设定好的程序变量中,让变量在后续的运算时变得有意义。
一句话概括的话,就是简单的人机交互。
而Scanner模块接收数据有两种不同的方法:next 方法、nextLine 方法。
next方法
import java.util.Scanner;
//这里是对包的调用,与Python里的库的调用是一样的,用的都是import
public class Demo01 {
public static void main(String[] args) {
//从键盘接收数据
Scanner scan = new Scanner(System.in);
//Scanner本意是扫描仪的意思,System是系统的意思,in是在...里,你可以理解为新建一个扫描仪,把数据录入系统里,这个“扫描”就是扫描你的键盘输入值
System.out.println("请问你叫什么名字?:");
//这行打印函数,是提醒你输入数据
//next方式接收字符串
if(scan.hasNext()){
//看的出来这是一个if条件语句,默认为真,假如真的接收到了数据,则执行以下的操作步骤
String str1 = scan.next();
//接收的数据赋值给了字符串变量str1
System.out.println(str1+"你好!我是Java8,这是第一次人机交流,欢迎走入Java的大门,这是第一步!祝你成功!");
//变量与设定好的语句进行拼接,这也是简单的人机交互。
}
scan.close();
//在结束scanner方法之后,要将其关闭,就像扫描仪使用完毕之后要关闭电源一样,以免浪费电源,这也是一样的,防止占用过多地资源。
}
}
在这串代码中,请你尝试输入你的名字——“张三”,会发现打印出来的就是张三开头拼接的一句话。
下面我们做一点点改变,输入“张 三”,在“张”和“三”之间加一个空格。会发现只输出了“张”,而没有输出“三”。 这是为什么呢?我们先带着这个疑问来看一下nextLine 方法。
nextLine 方法
import java.util.Scanner;
//这里是对包的调用,与Python里的库的调用是一样的,用的都是import
public class Demo02 {
public static void main(String[] args) {
//从键盘接收数据
Scanner scan = new Scanner(System.in);
//Scanner本意是扫描仪的意思,System是系统的意思,in是在...里,你可以理解为新建一个扫描仪,把数据录入系统里,这个“扫描”就是扫描你的键盘输入值
System.out.println("请问你叫什么名字?:");
//这行打印函数,是提醒你输入数据
//nextline方式接收字符串
if (scan.hasNextLine()){
//看的出来这是一个if条件语句,默认为真,假如真的接收到了数据,则执行以下的操作步骤
String str2 = scan.nextLine();
//接收的数据赋值给了字符串变量str2
System.out.println(str2+"你好!我是Java8,这是第一次人机交流,欢迎走入Java的大门,这是第一步!祝你成功!");
//变量与设定好的语句进行拼接,这也是简单的人机交互。
}
scan.close();
//在结束scanner方法之后,要将其关闭,就像扫描仪使用完毕之后要关闭电源一样,以免浪费电源,这也是一样的,防止占用过多地资源。
}
}
这次我们在输入“张 三”,会发现即使加上空格也会被完整的输出了!
“笑”看next方法与nextLine 方法的不同之处
这个问题不需要想的太复杂,使用next方法若输入的数据中间出现空格,则空格往后的数据都不会被记录。
nextLine 方法则不同,它更加强大,可以接收带空格的数据。下面是更加详细的剖析。
想输入Int、float这些类型怎么办
细心的同学会发现,上面两个例子输入的数据都是字符串类型的。那我们想输入int、float类型的数据该怎么办呢,其实Scanner模块已经给我们内置了这些实现的方法,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。
仔细阅读下面的代码,你会有一个很清晰的了解。
public class Demo04 {
public static void main(String[] args) {
System.out.println("请输入数字:");
//这行打印函数,是提醒你输入数据
Scanner scan = new Scanner(System.in);
//Scanner本意是扫描仪的意思,System是系统的意思,in是在...里,你可以理解为新建一个扫描仪,把数据录入系统里,这个“扫描”就是扫描你的键盘输入值
double sum = 0;
//定义一个double变量
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();
//在结束scanner方法之后,要将其关闭,就像扫描仪使用完毕之后要关闭电源一样,以免浪费电源,这也是一样的,防止占用过多地资源。
}
}
尾言
学习了这个模块之后,其实就可以开发一些简单的终端运算工具了,像简单的加减乘除运算甚至是复杂的物理化学公式等,都可以借助Scanner模块实现,在日后学习完图形界面后,它将成为必不可少的数据接收工具。
喜欢的朋友麻烦给个“一键三连”+“关注”,一起进步!