Java显示包含前导零的int的长度

时间:2015-02-05 17:28:35

标签: java

我想显示用户显示的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的长度。

我有没有其他方法可以获得这个长度?

6 个答案:

答案 0 :(得分:7)

因为int number = 0123相当于int number = 83,因为0123octal常量。感谢@DavidConrad和@DrewKennedy获得octal精度。

如果您想要保持领先String

,请将其声明为0
String number = "0123";
int length = number.length();

然后当您需要号码时,只需执行Integer.parseInt(number)

即可

为什么java 0xx中的八进制表示法的语法?

  

Java语法的设计接近于C语言,参见例如第20页   JVM规范如何成为2008年JVM语言峰会的主题演讲   作者:James Gosling(20_Gosling_keynote.pdf):

反过来,这就是用C语言定义八进制常量的方式:

  

如果整数常量以0x或0X开头,则为十六进制。如果它   从数字0开始,它是八进制。否则,假设是   小数...

请注意,这部分是programmers.stackexchange上的@gnat答案的C& P.

https://softwareengineering.stackexchange.com/questions/221797/reasoning-behind-the-syntax-of-octal-notation-in-java

答案 1 :(得分:5)

改为使用字符串:

String number = "0123";
int length = number.length(); // equals 4

答案 2 :(得分:0)

这不适用于int,因为0123的内部表示与123相同。程序不记得如何写入值,只记住实际值。

您可以做的是声明一个字符串:

String number = "0123";
int numberLengthWithLeadingZeroes = number.length(); // == 4
int numberValue = Integer.parseInt(number); // == 123

答案 3 :(得分:0)

如果你真的想要包含领先的0,你可以随时将它存储在一个字符数组中

示例:

char[] abc = String.valueOf(number).toCharArray();

然后显然你可以弄清楚数组的长度。

正如有几个人已经指出的那样,整数并没有领先0。

答案 4 :(得分:0)

String abc=String.format("%04d", yournumber);

表示零填充,长度= 4。 请参阅此链接。

http://download.oracle.com/javase/7/docs/api/java/util/Formatter.html

这可能有助于你..

答案 5 :(得分:0)

Java中的

Integer没有前导零。如果将值0123分配给intInteger变量,它将被解释为八进制常量而不是十进制常量,这可能会导致细微的错误。

相反,如果您想保留前导零,请使用String,例如

String number = "0123";

这样你也可以测量长度:

String number = "0123";
System.out.println(number.length());