如何在java中将字符串解析为最多两位数的整数
我有一个字符串,它包含像12:02这样的值。现在我根据拆分了这个字符串: 并存储到数组中。现在我必须将这些数组值解析为整数。。 从字符串解析为整数时,my02仅成为2,而需要02。 我不知道怎么做 这是我的密码如何在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
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
。