在Java编程中,从控制台读取用户输入的数据是常见的操作,这在开发命令行界面的应用程序时尤其重要。下面将详细介绍两种主要的从控制台读取数据的方法,并通过示例代码来阐述它们的用法。 ### 方法一:使用`BufferedReader`与`System.in` 在JDK 1.4及以后的版本中,我们可以使用`BufferedReader`配合`InputStreamReader`从控制台读取数据。这种方法的优点是它可以处理较长的输入行,并且可以按行读取。以下是具体的实现: ```java import java.io.BufferedReader; import java.io.InputStreamReader; public class TestConsole1 { public static void main(String[] args) { String str = readDataFromConsole("Please input string:"); System.out.println("The information from console:" + str); } private static String readDataFromConsole(String prompt) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; try { System.out.print(prompt); str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } return str; } } ``` 在上述代码中,`readDataFromConsole`方法创建了一个`BufferedReader`实例,然后调用`readLine`方法读取用户输入的整行文本。 ### 方法二:使用`Scanner`类 从JDK 1.5开始,`java.util.Scanner`类提供了更方便的方式来读取控制台数据。`Scanner`不仅可以读取整行,还可以识别各种数据类型,如整数、浮点数等。以下是使用`Scanner`的示例: ```java import java.util.Scanner; public class TestConsole2 { public static void main(String[] args) { String str = readDataFromConsole("Please input string:"); System.out.println("The information from console:" + str); } private static String readDataFromConsole(String prompt) { Scanner scanner = new Scanner(System.in); System.out.print(prompt); return scanner.nextLine(); } } ` 在这里,`readDataFromConsole`方法创建了`Scanner`实例,然后调用`nextLine`方法读取用户输入的一行文本。 ### `Scanner`的高级用法 `Scanner`类的灵活性使得它在处理复杂输入时非常有用。例如,以下代码展示了如何从文件中读取数字并计算它们的总和: ```java import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class TestConsole4 { public static void main(String[] args) throws IOException { File file = new File("num.txt"); // 写入示例数据 FileWriter fw = new FileWriter(file); fw.write("2 2.2 3.3 3.33 4.5 done"); fw.close(); System.out.println("Sum is " + scanFileForSum(file.getAbsolutePath())); } public static double scanFileForSum(String fileName) throws IOException { double sum = 0.0; FileReader fr = new FileReader(fileName); Scanner scanner = new Scanner(fr); while (scanner.hasNext()) { if (scanner.hasNextDouble()) { sum += scanner.nextDouble(); } else { // 跳过非数字字符或行结束符 scanner.next(); } } scanner.close(); return sum; } } ``` 在`scanFileForSum`方法中,`Scanner`对象逐个检查输入流中的下一个元素,如果它是双精度浮点数(`hasNextDouble()`),则累加到总和中;否则,使用`next()`方法跳过该元素。 以上就是Java中从控制台读取数据的两种主要方法以及`Scanner`类的一些高级用法。在实际编程中,选择哪种方法取决于具体需求,如是否需要处理特定的数据格式、性能要求等。
- 粉丝: 3
- 资源: 874
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助