2017-11-02 17 views
-1
int a=000123,b=1 
int len=(int)Math.log10(a)+1; 
while((a=a/10)!=0) 
{ 
    ++b; 
} 
System.out.println("Number of Digits:"+b); 

출력 : 자릿수 : 3 왼쪽에서 발생하는 경우 0을 계산하지 않습니다. 제로로 숫자를 세는 방법이 있습니까?숫자가 0으로 시작하는 경우 정수에서 자릿수를 찾는 방법은 무엇입니까?

+3

'int' 대신'String'을 사용하십시오. 0은 Java에서 생각하는 것과는 다른 의미입니다. – Eran

+2

이 작업을 수행하려면 문자열을 사용해야합니다. 정수는 선행 0을 저장하지 않습니다. –

+0

조심하십시오. '000123' (java가 8 진이라고 생각하는)은 실제로는 83입니다 (십진수). – byxor

답변

-1

안녕하세요 난 당신이 할 수 가장 좋은 문자열로 숫자를 얻을 당신이 일

+0

"캐스트"라는 단어를 사용하는 데주의하십시오. 'Integer.parseInt'가 대신 필요합니다. – byxor

+0

이 당신의 사이드 라이트 일지 모르지만 나는 어떤 논리가 아닌가요? –

+0

네 shure 네가 늙은 habbitsn 내가 대답을 변경합니다 –

0

을 계산하고자 할 때 nteger.parseInt를 사용하여 int로 캐스팅이라고 할 수 있다고 생각하지 않습니다 자사의 int하는 경우 (그리고 문자열이 아닌), 정의 할 때 앞에 0의 개수가 저장되지 않습니다. 000123은 정확히 0123과 같습니다. 그러나 숫자를 0으로 시작하면 (하나 또는 여러 개) 8 진수로 숫자를 정의하는 것입니다. 따라서 int a=000123; System.out.println(a);83을 출력합니다.

+0

하지만 그것은 단지 정수로 걸립니다 –

+0

죄송합니다, 귀하의 의견의 의미를 얻지 못했습니다. – Lars

+0

a = 000123은 정수로만 취급됩니다. –