如何在java中将字符串解析为最多两位数的整数

如何在java中将字符串解析为最多两位数的整数,java,string,parsing,integer,Java,String,Parsing,Integer,我有一个字符串,它包含像12:02这样的值。现在我根据拆分了这个字符串: 并存储到数组中。现在我必须将这些数组值解析为整数。。 从字符串解析为整数时,my02仅成为2,而需要02。 我不知道怎么做 这是我的密码 time = request.getParameter("time"); System.out.println(time); String[] timearr = time.split(":"); hourset=Integer.parseInt(timearr

我有一个字符串,它包含像12:02这样的值。现在我根据拆分了这个字符串: 并存储到数组中。现在我必须将这些数组值解析为整数。。 从字符串解析为整数时,my02仅成为2,而需要02。 我不知道怎么做

这是我的密码

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

    String[] timearr = time.split(":");
    hourset=Integer.parseInt(timearr[0]);
    minuteset=Integer.parseInt(timearr[1]);
分钟集的值会产生差异

请帮帮我。
提前谢谢。

这是不可能的。02仅变为2。

您将数字(2)的值与其字符串表示形式(可以是2、02、002、000002、0x02等)混淆

如果你在处理时间问题,请使用更适合的课程之一,例如日期和日历


如果确实要保留“02”,请使用字符串而不是整数。

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

这是因为实际数字没有前导零,因为它们毫无意义,而且是多余的。对于整数,如果您自己指定前导零,那么它将被视为八进制值

如果您想用前导零来显示数字,那么可以使用字符串格式来实现这一点

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

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

当您使用
System.out.printf(“%d”,分钟集)
在屏幕上输出数字时,您要求使用最简单的格式“2”对其进行格式化。如果您想在屏幕上看到“02”,请使用
“%02d”
模式对其进行格式化:


System.out.printf(“%02d”,分钟集)
数字数据类型基本上无法区分
2
02
。底层位模式是相同的。如果您尝试
System.out.println(02)
您将看到
2
作为输出,因为它无法区分两者之间的区别

是否将零放在数字前面是一个格式问题,您只能在再次将数字输出为字符串后控制其格式。例如,尝试:

String time2 = String.format("%02d:%02d", hourset, minuteset);
您将再次获得“12:02”。

您可以使用这个 如果您想在屏幕上看到“02”,请使用“%02d”模式对其进行格式化,
System.out.println(“%02d”,data)

黄金法则:如果您有数字,并且您知道不会对这些数字进行任何数学运算或数据库运算,那么应该将这些数字保留为字符串。我不知道这是否是一条真正的黄金法则,但这是我遵循的。哈哈


字符串有许多可操作的增强方式,这就是为什么如果不进行数学/db操作,我更喜欢字符串。

您遇到了什么错误?当然,如果您将02转换为整数,它将变为2Do您需要它只是为了输出吗?否则不会有什么区别。如果你想要02Integer,就不要解析它。parseInt()会这样做(02变为2),因为02类似于2。那么转换为int后的下一步是什么?请参阅以了解类似的问题。为了向OP澄清一些事情,“
%02d
”看起来像是想要的数字
02
”的原因是巧合。在
%
之后,
0
表示用零填充,
2
表示至少两个字符宽,
d
表示“十进制整数”。例如,
System.out.printf(“%02d”,7)输出
07