Tips

【Java】プログラム作成練習問題48

【Java】プログラム作成練習問題48

プログラム作成練習問題48回となります。

※この出題形式に関しては答えは1つではありません。
解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正解として下さい。

問題

Object型の配列を定義し、任意の文字列を複数格納
for文を使用し、要素の文字数を出力するプログラム

解答例1
[java] public class Excercise_048 {
public static void main(String[] args) {
Object[] objs = { "java", "apple", "teacher" };
for(int i = 0; i < objs.length; i++) {
String str = (String)objs[i];
System.out.println(str.length());
}
}
}
[/java]

配列に格納する時点で、String型がObject型に型変換されています。
そのためString型に戻さないとlengthメソッドを呼び出すことができません。


解答例2
[java] public class Excercise_048 {
public static void main(String[] args) {
Object[] objs = { "java", "apple", "teacher" };
for(int i = 0; i < objs.length; i++) {
System.out.println(((String)objs[i]).length());
}
}
}
[/java]

配列に格納する時点で、String型がObject型に型変換されています。
そのためString型に戻さないとlengthメソッドを呼び出すことができません。


間違い例1

[java] public class Excercise_048 {
public static void main(String[] args) {
Object[] objs = { "java", "apple", "teacher" };
for(int i = 0; i < objs.length; i++) {
System.out.println(objs[i].length());
}
}
}
[/java]

Object型からlengthメソッドは呼び出せません


間違い例2

[java] public class Excercise_048 {
public static void main(String[] args) {
Object[] objs = { "java", "apple", "teacher" };
for(int i = 0; i < objs.length; i++) {
System.out.println((String)objs[i].length());
}
}
}
[/java]

一見正しそうですが、記号の優先順位でコンパイルエラーとなります。
(String)objs[i]()をつけましょう。


新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search