2017-02-14 3 views
-3

저는 2의 수를 세는 방법을 알아 내려고 노력했습니다. 2의 수를 세고 int의 2를 인쇄하는 방법을 알아 내려고합니다.int에서 자릿수를 어떻게 계산합니까?

난 3552342343 과 같은 임의의 숫자를 넣으면 3을 찾고 있는데 4는 4가 3이므로 4를 인쇄하고 싶습니다.

+0

당신이 무엇을 요구하고 있는지 불분명합니다. 목록에있는 코드는 컴파일되지 않으므로 런타임 오류가 무엇인지 추측 할 수 없습니다. 완전한 질문을 게시하고 발생한 오류에 대한 세부 정보를 제공하십시오. –

답변

3

당신은

String number = "128"; 
String digit = "2"; 
// expensive but simple. 
int matches = number.split(digit).length - 1; 

당신이 포함 같은 루프 뭔가를 사용하고 싶은 말은 모든 상대를 만나 분할을 사용할 수 있습니다.

// no objects 
char digit = '2'; 
int count = 0; 
for (int pos = number.indexOf(digit); pos >= 0; pos = number.indexOf(digit, pos + 1) 
    count++; 

이것은 더 빠르지 만 그렇게 간단하지는 않습니다.

@Kon 당신이

char digit = '2'; 
for (char ch : number.toCharArray()) // creates an object 
    if (ch == digit) 
     count++; 

또는

// no objects 
char digit = '2'; 
for (int i = 0; i < number.length(); i++) 
    if (number.charAt(i) == digit) 
     count++; 

문자열 문자를 반복 할 수 있듯이 몇 가지 흥미로운 런타임 최적화를 가지고 있는데 테스트해야하지만 두 번째 방법은, 가장 빠른 의심 확인하러.

+1

나는이 접근법이 얼마나 게으른지를 좋아하지만 조금 지나치게 과장된 것입니다. String의'char []'표현의 문자를 반복하고''2 ''또는 다른 정수를 찾는 것이 더 빠르고 이해하기 쉬워야합니다. – Kon

+1

감사합니다. 정확히 제가 당신에게 묻고 있던 대답입니다. –

+0

숫자가 음수이면? – nasukkin

관련 문제