[英]Java display length of int containing leading zeros
我想显示用户显示的4位数字的长度,我遇到的问题是,每当我读取长度为4位但尾随零的数字的长度时,长度就会出现在数字减去零。
这是我尝试过的:
//length of values from number input
int number = 0123;
int length = (int)Math.log10(number) + 1;
返回长度为3我尝试的另一件事是:
int number = 0123;
int length = String.valueOf(number).length();
这也返回了3的长度。
有没有其他方法可以获得这个长度?
因为int number = 0123
等于int number = 83
因为0123
是octal
常量。 感谢@DavidConrad和@DrewKennedy的octal
精度。
如果要保持前导0
,请将其声明为String
String number = "0123";
int length = number.length();
然后当你需要数字时,只需做Integer.parseInt(number)
为什么java 0xx中的八进制表示法的语法?
Java语法被设计为接近于C语言,参见例如JVM Spec如何成为第20页,来自James Gosling的JVM语言峰会2008(20_Gosling_keynote.pdf):
反过来,这是如何用C语言定义八进制常量的方式:
如果整数常量以0x或0X开头,则为十六进制。 如果它以数字0开头,则为八进制。 否则,假设为十进制...
请注意,这部分是programmers.stackexchange上@gnat答案的C&P。
改为使用字符串:
String number = "0123";
int length = number.length(); // equals 4
这不适用于int,因为0123的内部表示与123相同。程序不记得如何写入值,只记住实际值。
你可以做的是声明一个字符串:
String number = "0123";
int numberLengthWithLeadingZeroes = number.length(); // == 4
int numberValue = Integer.parseInt(number); // == 123
如果你真的想要包含前导0,你总是可以将它存储在一个字符数组中
例:
char[] abc = String.valueOf(number).toCharArray();
那么显然你可以弄清楚数组的长度。
正如几个人已经指出的那样,整数没有前导0。
String abc=String.format("%04d", yournumber);
用于零填充,长度= 4。 请参阅此链接。
http://download.oracle.com/javase/7/docs/api/java/util/Formatter.html
这可能对你有所帮助..
Java中的Integer
没有前导零。 如果将值0123
分配给int
或Integer
变量,它将被解释为八进制常量而不是十进制常量,这可能导致细微的错误。
相反,如果你想保持前导零,请使用String
,例如
String number = "0123";
这样你也可以测量长度:
String number = "0123";
System.out.println(number.length());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.