Java中使用Scanner类进行键盘的输入详解
我们在使用Java写代码时,经常会遇到从键盘输入字符串等操作,这时候我们需要用到的是我们的Scanner类来实现获取用户从键盘上的输入操作。
Scanner类是一个基于正则表达式的文本扫描器,它可以从文件,输入流,字符串解析出基本类型值和字符串值。Scanner同时也提供了多个构造器,用于接收文件,输入流,字符串。
当我们引入Scanner这个类的时候,我们需要导入:import java.util.Scanner;这个包
本篇文档主要是通过介绍3中Scanner执行的操作类型
(1).Scanner提供了两种方法来扫描输入,这两种方法分别是:hasnextXXX(),nextXXX()
hasnextXXX():表示是否还有下一个输入项,其中XXX可以用来表示int,long,double,等代表基本数据类型的字符串。注意的是,如果我们只是判断下一个输入的内容是不是字符串,那么我们可以直接使用hasnext()。
nextXXX():获取用户输入的项,使用nextXXX()就代表了用户输入的数据已经被显示在IDE上。XXX的含义与上文的含义相同。
接下来举一个例子来实现这两个方法的操作:
public class test {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in); //这句话代表了创建一个Scanner的实例对象,这个对象可以为用户提供输入,注意new Scanner(System.in)
while(sc.hasNext()){
System.out.println("输入想要输入的内容"+sc.next()); //以空格为分隔符
}
}
}
得到的最终结果如下:

上面的这个程序,是我们得到的最终结果,它表示用户输入字符串,在IDE上直接显示用户的输入,但是我们需要注意的是,当我输入12 32的时候,该程序会有两行输入,因为我们使用的方法是以空格为分隔符的,当我们使用空格的时候,自动的变成两个字符串输入。
(2).Scanner类为了方便,提供了两个方法进行逐行的读取(相当于以回车为分隔符)。这两种方法分别是:boolean hasNextLine(),String nextLine()。
boolean hasNextLine():返回输入源中是否还有下一行。
String nextLine():返回输入源中下一行的字符串。
我们也举一个例子来实现这两个方法,用来与上述方法进行比较:
public class test {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("输入想要输入的内容");
while(sc.hasNextLine()){
System.out.println("这一段是我输入的内容:"+sc.nextLine());
}
}
}
上述代码,我们最终得到的结果是:

通过观察上面的结果,可以知道,空格符已经不是分隔符,只有当我们使用回车换行的时候,该方法才执行下一次的输入。
(3).Scanner类的构造器还提供了一种可以读取文件的输入。该方法只需要在创建Scanner对象时传入一个File对象作为参数,就可以让Scanner读取文件的内容。(IO流之后可能会专门做一篇文档详细说明,这里暂且知道即可。)
代码的实现如下:
首先,我在我的D盘建一个文件夹1.txt,该文件夹的内容如下:

通过执行下面的代码:
public class test {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
// //读取文件中的内容
Scanner sc = new Scanner(new File("D:\\1.txt")); //注意这个地方,Scanner在创建对象的时候传入了File对象作为参数,这个File对象就是我们文件的路径
while(sc.hasNextLine()){
System.out.println(sc.nextLine());
}
}
}
上述代码得到的最终结果:

与前文我们文件中所写的内容相同。
以上这三种Scanner类使用的方式在Java初期基本OK(至少目前我只用过这三个,文件的输入基本没用过),如果后续我还使用了Scanner类的某些方法,我会在写一篇后续~
为了我们共同进步,我这里有计算机专业的各种视频,
如果想要,关注我的公众号:念流声。私聊我,看到后给你连接(只放了一张图片,视频有很多,需要什么可以私聊问我,有的话就给你)。

Java中使用Scanner类进行键盘的输入详解的更多相关文章
- java中带继承类的加载顺序详解及实战
一.背景: 在面试中,在java基础方面,类的加载顺序经常被问及,很多时候我们是搞不清楚到底类的加载顺序是怎么样的,那么今天我们就来看看带有继承的类的加载顺序到底是怎么一回事?在此记下也方便以后复习巩 ...
- Java中的Scanner类
java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入.创建Scanner对象的基本语法: Scanner s = new Scanner(System. ...
- java中包的命令行(cmd)操作详解
一.什么是包? 为了更好地组织类,防止在一个空间下出现类重名,Java提供了包机制.包是类的容器,用于分隔类名空间(类型于C++中的命名空间).如果没有指定包名,所有的示例都属于一个默认的无名包(又称 ...
- (转)java中静态代码块的用法 static用法详解
一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来 ...
- java中静态代码块的用法 static用法详解(转)
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...
- 关于Java中的程序,进程和线程的详解...
程序:一段静态的代码,一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体,是应用软件执行的蓝本. 进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个 ...
- 【转】java中静态代码块的用法 static用法详解
原文网址:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)java 静态代码块 静态方法区别一般情况下,如 ...
- Java中对象的深复制和浅复制详解
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...
- java中静态代码块的用法 static用法详解
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...
随机推荐
- python nonlocal 的具体原理
很多文章都大概列了下nonlocal的具体用法,比如看到几篇文章写的 “nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量” 看完以后我感觉自己是懂了,但光从这句话来说还没完全理解它 ...
- 洛谷 P3368 树状数组 题解
题面 本题随便看两眼就知道该题满足了优美的查分性质: 对于在区间[x,y]内操作时,应该将查分数组的第x项和第y+1项进行相反操作: 询问答案时,问第i个数的值就是查分数组的前i项和: 暴力+玄学卡常 ...
- <<C++ Primer>> 第三章 字符串, 向量和数组 术语表
术语表 第 3 章 字符串, 向量和数组 begin: 是 string 和 vector 的成员,返回指向第一个元素的迭代器.也是一个标准库函数,输入一个数字,返回指向该数字首元素的指针. 缓 ...
- 声明一个LIst类型的数组
ArrayList[] graphArrayList = new ArrayList[4]; for(int i=0;i<graphArrayList.length;i++){ graphArr ...
- 初识JavaScript(二)
初识JavaScript(二) 我从上一篇<初识JavaScript(一)>知道和认识JavaScript的词法结构,也开始慢慢接触到了JavaScript的使用方法,是必须按照JavaS ...
- day 15 模块 相对导入
自定义模块: 什么是模块:本质就是.py文件,封装语句的最小单位. 自定义模块:实际上就是定义.py,其中可以包含:变量定义,可执行语句,for循环,函数定义等等,他们统称模块的成员. 模块的运行方式 ...
- solve update pip 10.0.0
The bug is found in pip 10.0.0. In linux you need to modify file: /usr/bin/pip from: from pip import ...
- 剑指offer-4:变态条楼梯
##四.变态条楼梯 ###题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. ###分析 也是斐波那契数列问题,根据上述的思路,可 ...
- 雪花算法生成ID
前言我们的数据库在设计时一般有两个ID,自增的id为主键,还有一个业务ID使用UUID生成.自增id在需要分表的情况下做为业务主键不太理想,所以我们增加了uuid作为业务ID,有了业务id仍然还存在自 ...
- 使用 gitolite 管理配置 git 库的权限
问题:每次创建git库都需要在gitolite的配置文件中添加git库的配置信息,为了方便管理git库,不在重复提交,所以修改gitolite的配置管理文件. 环境:ubuntu16.04 安装git ...