如何在Java中使用标准输入函数?
在Java中使用标准输入函数,需要使用Java的输入流(InputStream)来读取标准输入数据。标准输入数据是通过键盘输入的数据,在Java中可以通过System.in对象来获取标准输入流。下面介绍如何在Java中使用标准输入函数。
1.使用Scanner类读取标准输入数据
Scanner类是Java中常用的读取输入数据的类,通过Scanner类的构造函数可以实例化一个Scanner对象,然后可以使用Scanner对象读取标准输入数据,示例代码如下:
import java.util.Scanner;
public class StdinDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println("input: " + line);
}
scanner.close();
}
}
上述代码中,使用Scanner的构造函数创建了一个Scanner对象,并将标准输入流System.in作为参数传递给Scanner构造函数。然后使用while循环来不断读取标准输入数据,每次读取一行数据,并输出到控制台。
2.使用BufferedReader类读取标准输入数据
除Scanner类外,Java中还有另一种读取输入数据的类BufferedReader,通过BufferedReader可以高效地读取输入数据。示例代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class StdinDemo {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println("input: " + line);
}
reader.close();
}
}
上述代码中,使用BufferedReader的构造函数创建了一个BufferedReader对象,并将标准输入流System.in作为参数传递给BufferedReader构造函数。然后使用while循环来不断读取标准输入数据,每次读取一行数据,并输出到控制台。
需要注意的是,使用BufferedReader读取输入数据时需要处理IOException异常。
3.使用DataInputStream类读取标准输入数据
除Scanner和BufferedReader外,Java中还有另一种读取输入数据的类DataInputStream,通过DataInputStream类可以读取各种基本数据类型。示例代码如下:
import java.io.DataInputStream;
import java.io.IOException;
public class StdinDemo {
public static void main(String[] args) throws IOException {
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();
boolean b = dis.readBoolean();
double d = dis.readDouble();
System.out.printf("i=%d, b=%s, d=%.2f
", i, b, d);
dis.close();
}
}
上述代码中,使用DataInputStream的构造函数创建了一个DataInputStream对象,并将标准输入流System.in作为参数传递给DataInputStream构造函数。然后使用readInt、readBoolean、readDouble方法分别读取整型、布尔型和双精度浮点型数据,并输出到控制台。
需要注意的是,使用DataInputStream读取输入数据时需要处理IOException异常。
总结起来,可以使用Scanner、BufferedReader和DataInputStream类来读取标准输入数据,各有优劣。对于输入数据量较少的情况,建议使用Scanner类;对于输入数据量较大的情况,建议使用BufferedReader类;对于读取各种基本数据类型的情况,建议使用DataInputStream类。
