• ベストアンサー

配列で、値の入っている要素数を返すには?

配列abcの長さを取得するには、abc.lengthを使いますよね。 仮にString型の配列abc[20]があったとします。要素数を調べるには、abc.length とすれば、20が返ってきます。 そこで、どこまで、要素が入っているかを調べたい場合、どうするんですか? 例えば、abc[10]まで、要素が入っていて、残りは全部要素が入ってないとします。その時、10を返してくれる、そのようなメソッドはあるんでしょうか? 私がAPIで調べたら、ありませんでした。代表的なアルゴリズムでもいいので、誰か知っている人がいたら教えて下さい。 自分で作ってみたんですが、一般的にはどのようなやり方でやっているのか知りたいので、お願いします。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • -soh-
  • ベストアンサー率27% (55/201)
回答No.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;  } } ではどーでしょ? ほいであであ。

kamkamkam3
質問者

お礼

どうもご回答ありがとうございます。ソースコードまで、書いてもらえて大感謝です。 abc[0]~abc[19]まではnullで初期化されます。 ↑やはりそうなんですか。自分でも、迷っていました。下の部分のソースコードのようにやっても面白いですね。専門家の人が、書くと、ソースコードも様になりますね。Javaハ便利ですね。なかなか、クラスの書き方を見るだけでもとても面白いです。 うーん、就職してもこのようなコードは書けるんでしょうか?下の部分のソースコードが特に気に入りました。こんなくだらない質問のソースコードもうまい書き方があるんだな、とつくづく感心してます。面白いので、勉強の糧にさせてもらいます。あー、私もいいコードを早く作れるようになりたいです。どうもありがとうございます。では、またの機会に、宜しくお願いします。

その他の回答 (1)

noname#16216
noname#16216
回答No.1

> 例えば、abc[10]まで、要素が入っていて、残りは全部要素が入ってないとします。 こういう場合、ArrayList か Vector クラスを使うのではないですか? これらのクラスを使えば、size メソッドでどれだけの要素が詰まっているのか 簡単に取得できますし、わざわざString配列のどこまで要素が入っているのかを 調べるメソッドを実装する手間も省けると思いますが。。。

kamkamkam3
質問者

お礼

どうも、大変分かりやすい回答ありがとうございます。sizeメソッドってのがあるんですね。 なにぶん、独学だもんですから、そういうところまで頭が回らないので。。。やはり、聞いてみてよかったです。こちらの方が、やり方が綺麗ですよね。その方法で、やってみます。どうもありがとうございます。 方法を聞かなかったら、おかしなアルゴリズムで配列の要素を調べていたことになっていたと思います。ありがとうございました。大変分かりやすかったです。

関連するQ&A

  • 配列の要素数について

    下記の記述の場合、配列の要素数っていくつになりますか? Dim strArray() As String ReDim strArray(0) また下記のように、配列の要素数を具体的に書かずに使った場合不具合はでますか? Dim strArray() As String strArray(0) = "aa" strArray(1) = "bb"

  • Javaで配列の長さを知るメソッド

    Javaの配列の長さを知るメソッドを調べています。 例えば String sTest[][] = new String[2][2]; sTest[0][0] = "something"; だとして、sTest[0][0]の長さ(文字数)の9を出力したいのですが、どのようにすればいいのでしょうか。 APIを調べて、クラスArrayのgetlengthを使って System.out.println(getlength(sTest[0][0])); としてみたら駄目でした。 また、Stringクラスのlengthを使って System.out.println(length(sTest[0][0])); としても駄目でした。 まだAPIにあまりなれていないのですが、書き方が間違っているのでしょうか?

    • ベストアンサー
    • Java
  • VB.NET の配列の要素数

    VB.NETで List(Of String()) の多次元配列を宣言したとします。 Listの要素数とListの中のStringの要素数はどのように確認すれば わかるでしょうか? どうぞ、よろしくお願いいたします。

  • 二つの配列の要素を比べる方法がわかりません

    いつもお世話になっています。 n行3列の配列のVectorが二つあります。 その同じ行と列に対応する要素どうしを比較する ためにVectorから値を取得したいのですが、その 方法がわかりません。 なんとなくtoArrayというメソッドを使うんじゃないのかなあという気はしてるんですが…。 ちなみにVectorにaddするときは、1行3列のString型の配列をaddしています。 Vectorの配列から要素を取り出す方法をご存知の方が いらっしゃいましたら、ご教授ください。

    • ベストアンサー
    • Java
  • 要素にnullが入った多次元配列の次元数(2回目)

    同様の質問について再度投稿します。 以下、問題集で見掛けたプログラムの抜粋です。 String[][] Array = { {"Sunday", "Monday"}, null, {"Monday", "Tuesday"} }; int count =0; for (String[] A : array){ count += A.length; } System.out.println(count); このプログラムを実行すると、 要素nullのlengthが数えられないため、 NullPointerExceptionが発生する、ということです。 以前に質問した際には、 上記配列に含まれるnullは、大カッコで囲まれていないため、 次元としてカウントされないので、配列の次元数は 2次元となる、という回答を頂きました。 (配列変数も二次元で宣言されている。) 細かいようですが、大カッコで囲まれていないnullは 次元数としてカウントされなくても、要素として 拡張for文の対象にはなるのでしょうか…? 解説をお願いします。

  • JavaScriptでフォーム内配列要素の要素数

    いつもお世話になっております へんな質問で申し訳ございません CMSなどを使っているとフォーム内に配列形式になった名称をよく見かけるのですが 仮に下記のような場合に JavaScript内で各フォームの各々の要素数を取得することは可能でしょうか? <form name="f"> <input type="text" name="scf[配列1][0]" value="" class="widefat"> <input type="text" name="scf[配列1][1]" value="" class="widefat"> <input type="text" name="scf[配列1][2]" value="" class="widefat"> <input type="text" name="scf[配列2][0]" value="" class="widefat"> <input type="text" name="scf[配列2][1]" value="" class="widefat"> <input type="text" name="scf[配列2][2]" value="" class="widefat"> <input type="text" name="scf[配列2][3]" value="" class="widefat"> </form> 例えばJavaScriptで var nLenA = formname(scf[配列1]).length; var nLenB = formname(scf[配列2]).length; とすると nLenAの値は3 nLenBの値は4 という具合に配列数を取得してこれらを制御したいと考えています おいそがしいところ申し訳ございませんが わかる方がいらっしゃいましたらご教授お願い致します

  • String配列とHashMap

    メソッドの引数の数がとても多いので、String配列かHashMapにまとめて、値を渡すことになりました。 どちらを使うかなのですが、私の記憶だとString配列とHashMapの違いを次のように認識してるのですが、調べても答えが見つかりません。合ってるか教えてください。 String配列は、インデックスを検索しつつ値を取得してるので、インデックスの大きい番号ほど、値取得時の処理に時間を使う。HashMapは、特別な検索方法(?)で検索してるので、値取得時の処理に、時間をかけずにすむ。 なので、メソッドの引数として使うのはHashMapの方がよい。 メソッドの引数という性格上、要素数を固定しなくてもいいHashMapの方が使いやすいと思ってるのですが、現場のリーダーさんの認識とずれちゃってます。説得したいので、この辺りのことが解説されているサイトがありましたら、合わせて教えていただけると嬉しいです。

    • ベストアンサー
    • Java
  • 配列の値をまとめる?

    いつもお世話になっております。 Javaプログラミングについて質問させてください。 プログラム中で配列を用意しています。 (String[] param = new String[7]) この配列には値が入っています。 (param[0]="000",param[1]="000",param[2]="000",param[3]="111",param[4]="111",param[5]="333",param[6]="333") 配列に入っている値は全部で7つですが、種類としては3つです。 ("000","111","333") 配列に入っている値を元に、上記の種類(3つ)を格納するようなメソッドはありますか? ご存知の方がいらっしゃいましたら、ご教授ください。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • BCBで配列の要素数(0)の場合

    OS:Windows XP Pro Borland C++ Builder Pro v5.0 配列の要素数を取得したいのですが(要素数が0の場合も含む) どのようにしたらよいかわかりません。 どなたか、ご存知でしたらご教授願います。

  • VB.net 引数で配列変数を渡す際の要素数

    VB.net 2010 の質問です。 配列変数を他のプロシージャに引数で渡す際の、配列変数の要素数をあらかじめ宣言していないとエラーになります。 Dim Hairetsu() As String ' ←エラー Dim Hairetsu(100) As String ' ←正常 Public Sub aaa(ByRef Hairetsu() As String) Hairetsu(0) = "Test" '←正常の場合と、エラーの場合 End Sub Hairetsu(100) のように、要素数を宣言していると、エラーにならないのですが、 プログラム中、要素数がどこまで増加するか、分かりません。 Hairetsu()のように、要素数未確定の配列変数を渡すことは出来ないのでしょうか。 ご存知の方がいらっしゃいましたら、なにとぞアドバイスの程、よろしくお願いいたします。