我目前正在开发一个项目,我在该项目中流式处理文本文档并对其进行标记。唯一的问题是文本文档中的类型是未知的,有没有办法在我将它设置为程序中的变量之前检查它是什么变量类型?
答案 0 :(得分:2)
不,因为类型信息不包含在文本流中。例如,假设tokeniser遇到以下标记:
47
这有什么类型?它可以是String("47"
),byte,int,long,float或double。所有这些类型都可以生成该令牌,因此在打印之前无法确定类型是什么。
解析文件时,你应该已经知道了什么类型,如果不匹配就会出错。
StringTokenizer类只返回字符串。如果您期待字符串,则可以将它们保存到变量中。如果您期望其他类型,则必须解析它。例如,如果您阅读字符串"47"
,则应通过Integer.parseInt运行它。这将返回一个int(例如,47
),或者如果它不匹配则抛出NumberFormatException。您可能希望捕获NumberFormatException并为用户提供错误,因为文本文件与您期望的不匹配。