gpt4 book ai didi

java - 如何使用Java PushbackInputStream读取数字

转载 作者:行者123 更新时间:2023-12-01 15:34:35 27 4
gpt4 key购买 nike

我需要从 PushbackInputStream 中读取一个数字(可以是整数、 double 、正数、负数等)。我是否必须逐字节读取并测试它们是否在 0-9 之间并测试分隔空间?

或者如何使用空格作为分隔符将流中的其余部分读入字符串数组?

编辑

让我把自己说得更清楚一些。我想对涉及运算符和数字的表达式进行一些解析。我可能(如果没有,你的好方法是什么?)每当我遇到数字的一部分而不是运算符时,我都需要使用 PushbackInputStream ,因为在这种情况下,我将不读/推回数字的部分我只是误读了。例如,我想解析“10+20*30”,我读取了1,它不在我的运算符的enum中,我把它放回去,尝试从 PushbackInputStream 读取一个数字。那么这里该怎么做呢?

最佳答案

您可以使用 Scanner 类来实现此目的。

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

使用此代码从名为 psi 的 PushbackInputStream 读取单个整数:

 Scanner sc = new Scanner(_psi_);
int i = sc.nextInt();

扫描仪还具有读取其他数据类型的方法。如果您想从文本文件中读取(少量)未知数量的 int,您可以使用如下内容:

Scanner sc = new Scanner(_psi_);
List<Integer> ints = new ArrayList<Integer>();
while(sc.hasNextInt())
ints.add(sc.nextInt());

Integer[] theIntArray = ints.toArray(new Integer[]);

编辑:作为替代方案,您可以读取单个字符(我会使用InputStreamReader)并检查是否有数字的一部分。如果它是数字的一部分,则将当前字符附加到字符串 (*) 的末尾。当您看到运算符时,请立即使用 Integer.parseInt() 解析字符串。

(*) 通过附加单个字符来构建字符串是不好的做法,因为它非常慢。使用 StringBuilder 通常是更好的选择。

关于java - 如何使用Java PushbackInputStream读取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com