我有一个扫描仪,并将分隔符设置为“”,但它仍然不会使用next()方法读取空格。我知道nextline()有效,但我需要单独检查输入中的每个字符,包括空格;这是一个复杂的数据分析问题。不过我很难过。谷歌一无所获。
任何人都可以帮我吗?我正在考虑将空格转换为特殊字符,然后为了分析字符,将其反转回一个空格,包含在一个字符串中......但这似乎有点矫枉过正!有更优雅的方式吗?
编辑:我的主要任务是,取一个字符串,并逐个字符地重复检查,以检查各种任务的数据。你必须多次检查它,一次检查一个字符,所以我认为扫描仪类是我最好的选择,因为它很容易使用(至少对我来说)。那是我的任务。有没有更简单的方法来解决这个问题?
答案 0 :(得分: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);
}
}
另见HERE
答案 1 :(得分:3)
而不是
scanner.next();
使用
scanner.nextLine();
这样您就可以使用分隔符来解决问题。
答案 2 :(得分:2)
尝试.useDelimiter("(\\b|\\B)")
它将使用每个字符的边界作为分隔符。
以下代码将准确打印用户键入的内容。 不会忽略任何字符,包括空格。
Scanner charScanner = new Scanner( System.in ).useDelimiter( "(\\b|\\B)" ) ;
while( charScanner.hasNext() )
System.out.print( charScanner.next() ) ;
答案 3 :(得分:0)
使用BufferedReader
读取输入行,然后在for
循环中迭代字符串,处理每个char
。
您可以Character.isWhitespace(char c)
检查字符是否为空格。