プロが教えるわが家の防犯対策術!

普通、String型の変数strの長さを知りたいと
思ったら str.length() で調べると思うのですが、
for 文中では、こういう風になりますよね‥‥

for (int i=0; str.length; i++)

ただ、while文の()内では、ちゃんとlengthメソッドの
後に()を付けていたはず。

for文の場合の()は特殊なのかなと思うのですが、
これってどういう理屈なのでしょうか?

# ;(セミコロン)がどうも怪しい感じなのですが。

A 回答 (2件)

まず、


>for文の場合の()は特殊なのかなと思うのですが、
for文内であろうと、String.length()の()がはずすことはできません。

どの本にfor (int i=0; str.length; i++) といった文がかかれていたのはわかりませんが、
考えられる原因として、以下の2点が挙げられます。
1.strが配列である。
配列の場合、配列の要素の数を調べるときには
hogehoge.length というように、()はつけません。
先ほどのforループの中に str[i] といった記述があれば、strは配列です。
変数strの定義をもう一度確認してください。
2.記述ミス
String型の変数strの文字列の長さを調べようとしているのに、
メソッドの括弧を付け忘れた可能性もあります。

いずれにせよ、str変数の定義をもう一度確認してみてください。
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

ご指摘のとおり、strはString[]型(配列型)でした。
なるほど、配列の要素数はカッコなしの.lengthで得るのですね。

ただ、.length()はメソッドだということは分かるのですが、「.length」はJavaの文法用語でいう何にあたるのでしょうか。インスタンスフィールドでしょうか?(つまり配列型の変数が生成される時に、lengthフィールドに要素数が格納されているということなのでしょうか)

APIリファレンスでArray型を調べたのですが、それらしきフィールドは見あたらないようでした‥‥。

お礼日時:2001/05/06 01:27

>「.length」はJavaの文法用語でいう何にあたるのでしょうか



もしかして JavaScript?
であれば、プロパティ(Property)です。

参考URLには、Netscape のリファレンスの該当ページを示しておきます。

参考URL:http://developer.netscape.com/docs/manuals/commu …
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

>もしかして JavaScript?
>であれば、プロパティ(Property)です。

いえ、JavaScriptではなく、Javaです。
でもなるほど、JavaScriptではプロパティですか。

なにかヒントを掴めそうな気もするので、
この機会にJavaScriptも勉強してみます(^^)

お礼日時:2001/05/06 09:03

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