您的位置:首页 > 编程语言 > Java开发

Java获取键盘输入的相关类

2014-12-24 21:52 197 查看
现有我们接触的程序中基本上都有与用户交互,因此java也不例外,下面是java通过键盘与用户交互的两个方法。也就是两个类:Scanner,BufferedReader.

在介绍这两个类之前先来回忆一下这句java程序的入口: public static void main(String [] args)。

从开始学习java就一直很纳闷为什么程序入口要这样写,是什么调用了这个主类的静态方法。。其实这个静态方法是有JVM来调用的,args这个形参是JVM负责赋值的。那么JVM是怎么样实现赋值的呢?先看一下下面的代码:

public class Test
{
public static void main(String [] args)
{
System.out.println(args.length);
for(String arg:args)
{
System.out.println(arg);
}
}
}


编译运行后可以看到args数组的长度为空。这是因为JVM调用main方法时并没有传给他参数所以会为空。

通过命令行运行java,例如java test 博客园 游戏

你会看到上面的输入为:

2

博客园

游戏

从上面的例子可以看出在运行java时,在类名后紧跟一个或者多个字符串(字符串之间用空格分开),JVM会把这些字符串依次赋值给args数组参数。

Scanner:

Scanner类是java1.5之后新增的一个工具类,是一个基于正则表达式的文本扫描器,可以很方便的获取用户键盘输入。由于Scanner类提供了多个构造器,所以可以从文件,输入流,字符串中解析出基本类型值以及字符串。

import java.util.*;

public class Test
{
public static void main(String [] args) throws Exception
{
// System.in代表标准输入,就是键盘输入
Scanner scan = new Scanner(System.in);
while(scan.hasNext())
{
System.out.println("键盘输入的内容是:"+scan.next());
}
{
{


你输入什么控制台就会输出什么。。

注意:Scanner类使用空白(包括空格,Tab空白,回车)作为多个输入项之间的分隔符,但它也提供了更改分割符的方法scan.useDelimiter();方法的参数应该是一个正则表达式。Scanner类,不仅可以读取字符串,还可以读取任何基本类型的输入项。Scanner类还提供了两个逐行读取的方法,可以查阅API查看。

BufferedReader:

BufferedReader是java1.5之前读取键盘输入的一个类,BufferedReader是javaIO流中的一个字符包装流,它必须建立在另一个字符流的基础之上。由于标准输入流是:System.in是一个字节流,程序中需要使用转换流InputStreamReader将其包装成字符流。

所以程序中采用如下的形式来获取键盘输入:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

只要是有了BufferedReader的对象就可以调用readLine()方法来逐行读取键盘输入。值得注意的是:每次键盘输入的值都被当作String类型,不像Scanner类可以读取基本数据类型的数据。

public class Test
{
public static void main(String [] args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str= null;
while(br!=null)
{
str = br.readLine();
System.out.println(str);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: