1. 概述

在这个教程中,我们将学习如何使用Java的Scanner类获取字符输入。

2. 获取字符

Java的Scanner类并没有像nextInt()nextLine()等方法那样提供直接获取字符的函数。

我们有几种方法可以利用Scanner获取字符输入。

首先,我们创建一个输入字符串:

String input = new StringBuilder().append("abc\n")
  .append("mno\n")
  .append("xyz\n")
  .toString();

3. 使用 next()

接下来,我们将展示如何使用Scannernext()方法以及String类的charAt()方法来获取字符输入:

@Test
public void givenInputSource_whenScanCharUsingNext_thenOneCharIsRead() {
    Scanner sc = new Scanner(input);
    char c = sc.next().charAt(0);
    assertEquals('a', c);
}

Java Scannernext()方法返回一个String对象。这里我们使用String类的charAt()方法从字符串对象中获取字符。

4. 使用 findInLine()

这个方法接受一个字符串模式作为输入,我们将传递"."(点)来匹配单个字符。然而,这会返回一个单字符的字符串,所以我们需要使用charAt()方法来获取字符值:

@Test
public void givenInputSource_whenScanCharUsingFindInLine_thenOneCharIsRead() {
    Scanner sc = new Scanner(input);
    char c = sc.findInLine(".").charAt(0);
    assertEquals('a', c);
}

5. 使用 useDelimiter()

这个方法同样只扫描单个字符,但以字符串对象的形式。类似于findInLine()接口,我们可以同样使用charAt()方法获取字符值:

@Test
public void givenInputSource_whenScanCharUsingUseDelimiter_thenOneCharIsRead() {
    Scanner sc = new Scanner(input);
    char c = sc.useDelimiter("").next().charAt(0);
    assertEquals('a', c);
}

6. 总结

在这篇教程中,我们了解了如何使用Java的Scanner获取字符输入。

如往常一样,所有示例的完整源代码可以在GitHub上找到。