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()
接下来,我们将展示如何使用Scanner
的next()
方法以及String
类的charAt()
方法来获取字符输入:
@Test
public void givenInputSource_whenScanCharUsingNext_thenOneCharIsRead() {
Scanner sc = new Scanner(input);
char c = sc.next().charAt(0);
assertEquals('a', c);
}
Java Scanner
的next()
方法返回一个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上找到。