dポイントプレゼントキャンペーン実施中!

取得したい結果を先にいうと、値段表示で、¥120,000とか一般的に表示されますよね。この中に表示されている「,」カンマだけの数をカウントするメソッドを作成したいのですが、どのような方法で作成すればよいかが分かりません。値段は上記以外の表示の場合も考慮します。
例 ¥145 (カンマ無し) 
  ¥500,000,000,000,000 (複数のカンマあり)など
public int count(String nedan){
int canma;
StringBuffer sb = new String(nedan);
int len = sb.length();

カンマだけの個数を計り結果をreturn canma;で返したいのですが、どうすればよいでしょうか?

A 回答 (3件)

入力値に誤りが起こり得る状況なのかが判らないのですが、無いと仮定すると(笑)



public int count(String nedan) {
StringTokenizer st = new StringTokenizer(nedan,",") ;
int canma = st.countTokens()-1 ;
return canma ;
}

とすれば区切り数を数える事が出来ると思います。
先頭や末尾に「,」があった場合は無視しますし、連続で区切りがあった場合は(「,,」とか)1つとしてカウントしてくれます。
希望があれば「、」(全角)と「,」(半角)を同一視するのも可能だし。
問題は、¥の直後に「,」があった場合ですかね、、。
まぁ、でも文字を分割しておけば、その手の処理も簡単に出来ると思いますよ。
    • good
    • 0
この回答へのお礼

StringTokenizer()で数えられるですね。
カンマの数を上手く数えることが出来ました。ありがとうございます。

お礼日時:2002/08/16 22:25

単に数えるだけのものですが、こんなのは?



import java.util.*;

public class test {
public static int count_char( String s, char c ){
int n = 0;
int pos = 0;
while ( (pos = s.indexOf( c, pos ) + 1 ) > 0 ){ n++; }
return n;
}
public static void t( String s ){
System.out.println( s + " = " + count_char( s, ',' ) );
}
public static void main (String args[]) {
t( "123" );
t( "1,2,3" );
t( "12,,3," );
t( ",," );
t( "," );
t( "" );
}
}

なんか、VBとかのコードみたいですが。
Java1.3.1+Mac OS X 10.1.5で試してます。
    • good
    • 0

カンマのつづりをcommaと修正させていただいた上で、テスト用のmainメソッドもつけて、クラス全体のサンプルを以下に示します。


正直言って良いプログラムとは言えません。というのも、カンマをカウントするというだけで、数字の間にあるカンマか、半角のカンマか、などの例外的な処理が何も入っていないからです。


public class commacount {
public commacount() {
}
public int count(String s){
StringBuffer sb = new StringBuffer(s);
int comma = 0;
int len = sb.length();
for (int i=0; i<len; i++) {
if (sb.charAt(i) == ',') comma++;
}
return comma;
}
public static void main (String args[]) {
commacount cc = new commacount();
int ret = cc.count("123,456");
System.out.println(ret);
ret = cc.count(",,,,,");
System.out.println(ret);
}
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!