一回も披露したことのない豆知識

配列abcの長さを取得するには、abc.lengthを使いますよね。

仮にString型の配列abc[20]があったとします。要素数を調べるには、abc.length とすれば、20が返ってきます。

そこで、どこまで、要素が入っているかを調べたい場合、どうするんですか?

例えば、abc[10]まで、要素が入っていて、残りは全部要素が入ってないとします。その時、10を返してくれる、そのようなメソッドはあるんでしょうか?

私がAPIで調べたら、ありませんでした。代表的なアルゴリズムでもいいので、誰か知っている人がいたら教えて下さい。

自分で作ってみたんですが、一般的にはどのようなやり方でやっているのか知りたいので、お願いします。

A 回答 (2件)

こんばんわ~、sohです



そーいうメソッドは存在してないと私も記憶してます
そういう場合はString配列ではなく動的格納オブジェクトを利用(Vector ArrayList等)を利用するのが一番てっとり早いと思いますが。。。。

アルゴリズムってほどたいしたもんじゃないですけど
通常String abc[] = new String[20];
を書いた時点では
abc[0]~abc[19]まではnullで初期化されます。

それを利用して
int i;
for(i=0; i<20; i++) {
  if(abc[i] == null)
   break;
}
System.out.println("有効要素数:"+i);
とか

もしくは追加メソッドを用意して
そっちで要素数を格納しちゃうとか

class addString {
 String abc[];
 int indexNum;
 void addStringTest(int Max) {
  abc = new String[Max];
  indexNum = 0;
 }
 void addString(String new) {
  if( indexNum >= abc.length ) {
   System.out.println("add failed."); // or throw Exception
   return;
  }
  abc[indexNum++] = new;

 }
 int getSize() {
  return indexNum;
 }
}
ではどーでしょ?

ほいであであ。
    • good
    • 0
この回答へのお礼

どうもご回答ありがとうございます。ソースコードまで、書いてもらえて大感謝です。

abc[0]~abc[19]まではnullで初期化されます。

↑やはりそうなんですか。自分でも、迷っていました。下の部分のソースコードのようにやっても面白いですね。専門家の人が、書くと、ソースコードも様になりますね。Javaハ便利ですね。なかなか、クラスの書き方を見るだけでもとても面白いです。

うーん、就職してもこのようなコードは書けるんでしょうか?下の部分のソースコードが特に気に入りました。こんなくだらない質問のソースコードもうまい書き方があるんだな、とつくづく感心してます。面白いので、勉強の糧にさせてもらいます。あー、私もいいコードを早く作れるようになりたいです。どうもありがとうございます。では、またの機会に、宜しくお願いします。

お礼日時:2002/07/07 11:19

> 例えば、abc[10]まで、要素が入っていて、残りは全部要素が入ってないとします。



こういう場合、ArrayList か Vector クラスを使うのではないですか?

これらのクラスを使えば、size メソッドでどれだけの要素が詰まっているのか
簡単に取得できますし、わざわざString配列のどこまで要素が入っているのかを
調べるメソッドを実装する手間も省けると思いますが。。。
    • good
    • 0
この回答へのお礼

どうも、大変分かりやすい回答ありがとうございます。sizeメソッドってのがあるんですね。

なにぶん、独学だもんですから、そういうところまで頭が回らないので。。。やはり、聞いてみてよかったです。こちらの方が、やり方が綺麗ですよね。その方法で、やってみます。どうもありがとうございます。

方法を聞かなかったら、おかしなアルゴリズムで配列の要素を調べていたことになっていたと思います。ありがとうございました。大変分かりやすかったです。

お礼日時:2002/07/07 11:06

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報