如何在String中将String解析为Integer最多两位数

时间:2013-12-02 06:46:31

标签: java string parsing integer

我有一个字符串,其中包含 12:02 等值。现在我根据分割了这个字符串: 并存储到array.Now我必须将这些数组值解析为整数.. 在从String解析为Integer时,我的 02 仅变为 2 ,而需要 02 。 我不知道怎么做。

这是我的代码..

time = request.getParameter("time");
    System.out.println(time);

    String[] timearr = time.split(":");
    hourset=Integer.parseInt(timearr[0]);
    minuteset=Integer.parseInt(timearr[1]);

minutset的值正在给出差异..

请帮帮我。 提前谢谢..

8 个答案:

答案 0 :(得分:2)

你可以使用这个 如果你想看到" 02"在屏幕上,用"%02d"格式化它图案, System.out.println("%02d",数据)

答案 1 :(得分:1)

您将数字(2)的值与其字符串表示形式混淆(可以是2,02,002,000002,0x02,无论如何)。

如果您正在处理时间,请使用其中一个更适合的时间,例如:日期和日历。

如果你真的想保留'02',请使用String而不是int。

答案 2 :(得分:1)

你必须区分两件事:数字是什么样的,数字是多少。例如,数字10可能看起来像“010”,“10”,“A”,“1e1”,但它仍然是相同的数字。

当您使用System.out.printf("%d", minuteset)在屏幕上输出数字时,您要求使用最简单的格式 - “2”格式化它。如果要在屏幕上看到“02”,请使用"%02d"模式格式化

System.out.printf("%02d", minuteset)

答案 3 :(得分:0)

这是不可能的。 02只变为2 ..

答案 4 :(得分:0)

02不是整数。 2是整数。在这种情况下你不能使用Integer。但是如果你想将它存储在Integer中,你必须再次解析(你必须编写一个自定义解析器,将0插入一个数字的第一个)并将其显示为String。

答案 5 :(得分:0)

这是因为实际数字没有前导零,因为它们完全没有任何意义并且是多余的。如果是整数,如果你自己指定一个前导零,那么它将被视为八进制值。

如果您想显示前导零的数字,那么您可以使用字符串格式来实现此目的。

int num = 123;
string leadingZeroes = String.format("%05d", num);

答案 6 :(得分:0)

数字数据类型从根本上无法区分202。基础位模式是相同的。如果您尝试System.out.println(02);,您会看到2作为输出,因为它无法区分。

是否在数字前加上零是一个格式化问题,只有再次将其作为字符串输出时,才能控制数字的格式。例如。尝试:

String time2 = String.format("%02d:%02d", hourset, minuteset);

你将再次获得“12:02”。

答案 7 :(得分:0)

黄金法则:如果您有数字,并且您知道不会对数字执行任何数学运算或数据库操作,则应将这些数字保留为字符串。我不知道这是否是一个真正的黄金法则,但这就是我所遵循的。洛尔。

字符串有许多强大的方法可以操作,这就是为什么我更喜欢String,如果不进行数学/数据库操作。