4

我有一个扫描仪,并将分隔符设置为“”,但它仍然不会使用 next() 方法读取空格。我知道 nextline() 有效,但我需要单独检查输入中的每个字符,包括空格;这是一个复杂的数据分析问题。不过,我很难过。谷歌一无所获。

谁能帮我这个?我正在考虑将空格反转为特殊字符,然后出于分析字符的目的,将其反转回包含在字符串中的空格...不过,这似乎有点矫枉过正!有没有更优雅的方式来做到这一点?

编辑:我的主要任务是,获取一个字符串,并逐个字符地检查它,多次检查各种任务的数据。你将不得不多次检查它,一次一个字符,所以我认为扫描仪类是我最好的选择,因为它很容易使用(至少对我来说)。那是我的任务。有没有更简单的方法来解决这个问题?

4

4 回答 4

4
Scanner scanner = new Scanner(file).useDelimiter("'")

但这是非常低效的。更好的方法是:逐字符阅读:

private static void readCharacters(Reader reader)
        throws IOException {
    int r;
    while ((r = reader.read()) != -1) {
        char ch = (char) r;
        doSomethingWithChar(ch);
    }
}

另见这里

于 2012-10-21T05:15:30.280 回答
4

代替

scanner.next();

采用

scanner.nextLine();

这样您就可以解决分隔符的问题。

于 2017-02-22T06:15:50.600 回答
2

尝试.useDelimiter("(\\b|\\B)")

它将使用每个字符的边界作为分隔符。

以下代码将准确打印用户键入的内容。不会忽略任何字符,包括空格。

Scanner charScanner = new Scanner( System.in ).useDelimiter( "(\\b|\\B)" ) ;
while( charScanner.hasNext() ) 
    System.out.print( charScanner.next() ) ;
于 2016-02-27T20:31:48.247 回答
0

使用 aBufferedReader读取一行输入,然后在循环中迭代字符串for,使用 each char
您可以通过 . 检查字符是否为空格Character.isWhitespace(char c)

于 2012-10-21T05:06:05.227 回答