2017-02-14 6 views
-3

私は、2の数を数えたり、2の数を数えたり、intの2の数を出力したりする方法を考えたいと思っています。intの桁数はどのように数えますか?

もし私が3552342343のような数字を入れたら 私は3を探していますが、私はそれが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++; 

文字列の文字を反復処理する可能性が示唆したように、いくつかの興味深い実行時の最適化を持っていると私はあなたがテストしなければならないのに第2の方法は、最速である疑いがありますチェックする。

+1

私はこのアプローチがどれほど怠け者であるのが大好きですが、ちょっと残忍ですね。文字列の 'char []'表現の文字を繰り返し、 '' 2 ''やその他の整数を探すことは、理解しやすくなるはずです。 – Kon

+1

これはまさに私があなたに求めていた答えです。 –

+0

数字が負の場合はどうなりますか? – nasukkin

関連する問題