如何使用Java PushbackInputStream读取数字
我需要从^{0-9
之间,并测试定界空间
或者如何使用空格作为分隔符将流中的其余部分读入字符串数组
编辑
让我说清楚一点。我想对涉及运算符和数字的表达式进行一些解析。我可能(如果不是,你的好方法是什么?)每当我遇到一个数字的部分时,需要使用PushbackInputStream
,而不是运算符,因为在这种情况下,我将未读/回推我刚刚错误读取的数字的部分。例如,我想解析“10+20*30”,我读1
,它不在我的操作符的enum
中,我把它放回去,尝试从PushbackInputStream
中读取一个数字。那么在这里怎么做呢
# 1 楼答案
您可以使用Scanner类来实现这一目的
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
使用此代码从名为psi的PushbackInputStream中读取单个整数:
扫描仪也有读取其他数据类型的方法。如果要从文本文件中读取(少量)未知的int,可以使用以下方法:
编辑:作为一种替代方法,您可以读取单个字符(我会使用InputStreamReader),并检查是否有数字的一部分。如果它是数字的一部分,请将当前字符附加到字符串(*)的末尾。当你看到一个操作符时,立即用Integer解析这个字符串。例如parseInt()
(*)通过附加单个字符来构建字符串是不好的做法,因为它非常慢。使用StringBuilder通常是更好的选择