在命令行下要输入数据到程序中时,可以使用标准输入串对象System.in。但是实际中却很少直接使用它,因为System.in对象所提供的read()方法,是从输入串中取得一个字节的数据,并返回该字节的整数值,但如果您要取得的输入是一个字符串,或是一组数字时,System.in对象的read()方法一次只读入一个字节数据的方式并不适用。此时,可以通过java.util.Scanner类来取得使用者的输入。示例代码如下: import java.util.Scanner;
public class ScannerDemo
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("请输入:");
System.out.printf("Hello! %s!\n",scanner.next());
}
} 可以将Scanner看作是System.in对象的支持者,System.in取得使用者输入的内容后,交给Scanner作一些处理。其实这是
Decorator模式的一个应用。使用Scanner的next()功能,可以取得使用者输入的一些字符串;Scanner的nextInt()功能,可以取得数字;类似的还有nextFloat(),nextBoolean()等方法来取得使用者的输入。如下代码所示: import java.util.Scanner;
public class ScannerDemo2
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("Please input a number:");
System.out.printf("Your input is: %d!\n",scanner.nextInt());
}
} Scanner遇到空格符、Tab键或Enter键就会返回下一个输入,很多情况下并不适用。此时可以使用java.io.BufferedReader类来取得输入。BufferedReader在构建时接受一个java.io.Reader对象,在读取标准输入串时,可以使用java.io.InputStreamReader,它继承了Reader类。可以使用以下方法来为标准输入串建立缓冲区对象: BufferedReader+InputStreamReader+System.in三个工具组合在一起,可以让你进行文字输入的读取。如下代码所示: import java.io.*;
public class BufferedReaderDemo
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入一行文字,可以包含空白:");
String text = br.readLine();
System.out.printf("您输入了文字%s!\n",text);
}
} readLine()方法会返回按下Enter键之前的所有字符输入。不包括最后按下的Enter返回字符。静态对象in、out、err在程序执行时自动开启。分别对应标准输入串、标准输出串和标准错误输出串。还可以通过java命令运行时将输出结果定位到指定的文件,如:
java HelloJava >HelloJavaResult.txt,>>与>类似,只是将在指定文件后面附加。