Java中读取用户输入的是谁?Scanner类

打印 上一主题 下一主题

主题 907|帖子 907|积分 2721

前言

我们在初学 Java 编程的时候,总是感觉很枯燥乏味,想着做点可以交互的小系统,可以让用户自由输入,系统可以接收做出反映。这就要介绍一下 Java 中的 Scanner 类了。
一、Scanner类

Java 中的 Scanner 类是一个用于读取用户输入的工具类。它可以从控制台、文件、字符串等多种来源读取数据,并将其转换为不同的数据类型,如整数、浮点数、布尔值等。
Scanner 类是在 Java 5 版本中首次引入,在 java.util 包下,是 Java 的工具类,是一个最终类,实现了 Iterator, Closeable 两个接口。
  1. public final class Scanner implements Iterator<String>, Closeable {}
复制代码
我们从 Scanner 类中可以看到其提供了多个构造器,不同的构造器可以接收不同的数据源:输入流、文件、字符串等,然后进行数据解析。
  1. // 读取可读资源,并指定模式分隔
  2. private Scanner(Readable source, Pattern pattern) {}
  3. // 读取可读资源
  4. public Scanner(Readable source) {}
  5. // 读取输入流
  6. public Scanner(InputStream source) {}
  7. // 读取输入流,并指定字符编码类型
  8. public Scanner(InputStream source, String charsetName) {}
  9. // 读取文件
  10. public Scanner(File source) throws FileNotFoundException {}
  11. // 读取文件,并指定字符编码类型
  12. public Scanner(File source, String charsetName) throws FileNotFoundException {}
  13. // 读取路径文件
  14. public Scanner(Path source) throws IOException {}
  15. // 读取字符串
  16. public Scanner(String source) {}
  17. ......
复制代码
Scanner 类提供了许多有用的方法,如 next()、nextInt()、nextLine() 等,使得读取和解析输入变得非常方便。同时,Scanner 类还支持定界符(delimiter)的设置,可以根据指定的分隔符对输入进行分割,进一步简化输入处理的过程。

二、Scanner类基本使用

1. 基本使用

使用 Scanner 类,首先需要创建一个 Scanner 对象,并将其与一个输入流(如 System.in)相关联,然后使用 Scanner 对象的 next() 或 nextLine() 方法读取用户输入的文本。当然读取其他数据类型也是没有问题的,就需要使用对应类型的方法,如 nextInt()、nextShort()、nextLong() 等等。
  1. import java.util.Scanner;
  2. public class Test {
  3.   public static void main(String[] args) {
  4.     // 创建Scanner对象
  5.     Scanner scanner = new Scanner(System.in);
  6.     // 提示用户输入一个字符串
  7.     System.out.print("请输入一个字符串: ");
  8.     // 读取用户控制台输入的字符串
  9.     String input = scanner.nextLine();
  10.     // 控制台打印用户输入的字符串
  11.     System.out.println("你输入的字符串是: " + input);
  12.   }
  13. }
复制代码
当用户输入文本后,按下回车键后,输入的文本将作为字符串被读取并保存在 input 变量中。此时程序会将读取的字符串打印出来。
2. nextLine()方法

Scanner 类中的 nextLine() 方法用于获取输入的下一行文本。它会扫描输入流中当前位置到行尾(包括换行符 "\n"),并返回该行文本作为一个字符串,不包括行尾符号。如果当前位置已经是行尾,它将返回一个空字符串。可以通过重复调用该方法来连续读取多行文本。
  1. import java.util.Scanner;
  2. public class Test {
  3.     public static void main(String[] args) {
  4.         Scanner scanner = new Scanner(System.in);
  5.         
  6.         System.out.println("请输入多行文本,以空行结束:");
  7.         
  8.         StringBuilder stringBuilder = new StringBuilder();
  9.         // 判断是否有下一行
  10.         while (scanner.hasNextLine()) {
  11.             String line = scanner.nextLine();
  12.             // 遇到空行退出循环
  13.             if (line.isEmpty()) {
  14.                 break;
  15.             }
  16.             stringBuilder.append(line);
  17.             // 拼接行尾符号,保留换行格式
  18.             stringBuilder.append('\n');
  19.         }
  20.         String input = stringBuilder.toString();
  21.         System.out.println("输入的多行文本为:");
  22.         System.out.println(input);
  23.     }
  24. }
复制代码
总结

现在我们就可以使用 Scanner 类中的方法去接收用户的一些输入了,可以自己开发一些简易的小系统,是可以和用户交互的。
关注公众号:编程火箭车
我们定期发布编程相关的文章、资讯、活动等内容。帮助编程爱好者、初学者或初级程序员快速入门、打牢基础。欢迎大家关注,和我们一起探索编程的精彩世界。我们定期发布编程相关的文章、资讯、活动等内容。帮助编程爱好者、初学者或初级程序员快速入门、打牢基础。欢迎大家关注,和我们一起探索编程的精彩世界。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表