我有一个字符串,其中包含 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的值正在给出差异..
请帮帮我。 提前谢谢..
答案 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)
数字数据类型从根本上无法区分2
和02
。基础位模式是相同的。如果您尝试System.out.println(02);
,您会看到2
作为输出,因为它无法区分。
是否在数字前加上零是一个格式化问题,只有再次将其作为字符串输出时,才能控制数字的格式。例如。尝试:
String time2 = String.format("%02d:%02d", hourset, minuteset);
你将再次获得“12:02”。
答案 7 :(得分:0)
黄金法则:如果您有数字,并且您知道不会对数字执行任何数学运算或数据库操作,则应将这些数字保留为字符串。我不知道这是否是一个真正的黄金法则,但这就是我所遵循的。洛尔。
字符串有许多强大的方法可以操作,这就是为什么我更喜欢String,如果不进行数学/数据库操作。