小java问题

时间:2010-01-15 18:12:49

标签: java math

很抱歉,如果我的问题听起来很愚蠢。但是有些时候小事会给你带来很大的麻烦,并花费你的全部时间来解决它。但是感谢stackoverflow,我可以获得GURU建议。 :)

所以这是我的问题。我在一个字符串中搜索一个单词,并在该单词出现的地方加上0。 例如:搜索词是DOG,我有字符串“永远不会让狗咬你”所以字符串 将是000100。现在,当我尝试将此字符串转换为INT时,它会产生结果100 :(这很糟糕。我也不能使用int数组我只能使用字符串,因为我正在整理它,也在程序中使用其他地方。

现在我确定你想知道我为什么要把它转换成INT。所以我的回答。我使用每个字符串中的3个单词来制作这种二进制字符串。所以我说我使用了三个搜索查询,比如(狗,狗,永远)所以三个字符串都是  000100  000100  010000 然后我想要SUM它们应该产生像这个“010200”的结果,而它产生结果“10200”这是错误的。 :(

提前致谢

4 个答案:

答案 0 :(得分:5)

当然,int表示不会保留前导零。但是你可以在求和后轻松转换回字符串并自己填充左边的零 - 只需存储任何字符串的最大长度(假设它们可以有不同的长度)。或者,如果你想变得更加漂亮,你可以使用NumberFormat,但你可能会发现这对你的需求来说太过分了。

另外,请注意 - 如果任何单词出现在10个或更多字符串中,您将在此代码中获得一些意外结果。

答案 1 :(得分:3)

您可能希望调查java.util.BitSet

答案 2 :(得分:1)

您可以在值前加上“1”,这样可以保留前导0。然后,您可以考虑将该前缀考虑在内。

这一切都假设您正在解决另一条评论中提到的10溢出问题。

答案 3 :(得分:0)

您可以将其存储为字符数组吗?你使用int,这很好,但你真的不想要一个int - 你希望int中的每个位置代表一个字符串中的单词,然后打开或关闭它们(1或0)。似乎将它们存储在字符数组中会更有意义。