前些日子,博主在学Java的时候,找了许多版本的教学视频,但是发现大多数的视频都没有介绍如何使用控制台输入,这让学了一年c++习惯了cin的博主难受不已。在Java中不建议使用scanner(比如Scanner在处理空格输入的时候,会有很多麻烦),在学了Java一段时间之后,就再也不会使用scanner了。因为在将来写的程序不可能使用控制台输入技术,毕竟它是上个世纪的DOS时代的产物。但是还是想写下自己大致学习scanner时的见解,希望本篇文章能帮助读过文章的读者们!
示例代码
import java.util.Scanner;//使用前需要导入包
public class test
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("输入一个整数: ");
int number = scanner.nextInt();
System.out.print("输入一个字符或是字符串: ");
String str = scanner.next(); // 输入中不得含有空格,否则凉凉!
System.out.println("读入的整数为"+number);
System.out.println("读入的字符串为"+str);
scanner.close();//每次用完后记得关闭否则会出现warning
}
}
一些API函数:
delimiter() :返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
hasNext() :判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
hasNextLine() :如果在此扫描器的输入中存在另一行,则返回 true。
next() :查找并返回来自此扫描器的下一个完整标记。
nextLine() :此扫描器执行当前行,并返回跳过的输入信息。
其中,next() 从控制台读取一个字符串,nextInt()读取一个整数。
初学者只要知道简单用法即可,其他API函数只需简单了解就行
Markdown将文本转换为 HTML。
scanner.close()的必要性
使用完毕后,一定要关闭扫描器,这是因为Scanner(system.in)属于IO流,一旦打开,它一直在占用资源,因此使用完毕后切记要关闭。
缺点:
1、输入的时候不能输入带空格的内容,否则奇怪的错误出现了!(博主没有深挖问题,但是知道问题其实是很复杂的)
2、在使用Scanner的时候,如果不使用close()关闭的话,系统会报warning,但是博主偶然发现一个有趣的现象,如果通过scanner.close()来关闭scanner,一旦关闭,再次启动的时候,却是遇到异常
那如何解决这种问题呢?
下面是博主的一个比较菜鸟也是比较简单的方法,但是亲测有效嗷
在类的最后再使用close()方法
以上就是博主自己在学习scanner的一些心得体会,如果有什么需要补充不合适错误的地方,还请各位读者在评论区加以斧正。
最后真心希望这篇文章对你有所帮助!