hi,我是程序员王也,一个资深Java开发工程师,平时十分热衷于技术副业变现和各种搞钱项目的程序员~,如果你也是,可以一起交流交流。
今天我们来简单聊聊Java中的Scanner类。
Scanner
是Java中用于解析文本并获取不同类型的输入(如整数、浮点数、字符串等)的一个实用工具。Scanner
类位于java.util
包中,它提供了多种方法来读取控制台输入。
以下是Scanner
类的详细用法:
-
创建
Scanner
对象要使用
Scanner
,首先需要创建一个Scanner
对象,它会包装一个输入流,通常是System.in
(标准输入流)。Scanner scanner = new Scanner(System.in);
-
读取不同类型的输入
-
读取字符串:
String inputString = scanner.nextLine();
-
读取整数:
int inputInt = scanner.nextInt();
-
读取浮点数:
double inputDouble = scanner.nextDouble();
-
读取布尔值:
boolean inputBoolean = scanner.nextBoolean();
-
读取多个类型的输入(需要按照顺序调用相应的读取方法):
String name = scanner.next(); int age = scanner.nextInt(); scanner.nextLine(); // 读取换行符,因为nextInt()之后会留下一个换行符在输入流中
-
-
使用分隔符
默认情况下,
Scanner
使用空格作为分隔符。如果你想使用其他字符作为分隔符,可以使用useDelimiter
方法。scanner.useDelimiter(","); // 现在使用逗号作为分隔符
-
查找和匹配输入
-
查找特定字符串:
if (scanner.findWithinHorizon("example", 0)) { System.out.println("Found 'example'"); }
-
匹配特定模式:
if (scanner.hasNext("example\\d+")) { String matched = scanner.next(); System.out.println("Found matched string: " + matched); }
-
-
处理异常
在使用
Scanner
时,可能会遇到InputMismatchException
或NoSuchElementException
异常。为了处理这些异常,可以使用try-catch
块。try { int inputInt = scanner.nextInt(); } catch (InputMismatchException e) { System.out.println("Please enter a valid integer."); }
-
关闭
Scanner
当不再需要
Scanner
对象时,应该关闭它以释放资源。Scanner
实现了AutoCloseable
接口,因此可以使用try-with-resources
语句自动关闭。try (Scanner scanner = new Scanner(System.in)) { // 使用scanner } // scanner在这里自动关闭
-
其他有用的方法
hasNext()
:检查输入流中是否有下一个元素。hasNextLine()
:检查输入流中是否有下一行。skip()
:跳过分隔符。reset()
:重置Scanner
,忽略之前的所有输入。
Scanner
类是处理用户输入的强大工具,它的灵活性和易用性使得它成为读取和解析控制台输入的首选方式。在使用Scanner
时,要注意异常处理和资源管理,以确保程序的健壮性和效率。