拡張for文を使うと上手くいかない理由
Q&A
Closed
解決したいこと
RPGの戦闘プログラムを書いています。モンスターをランダムに生成するcreate()メソッド、生成したモンスターを配列に入れるmakeArray()メソッドを作りました。makeArray()メソッドの中で拡張for文を使ったのですが、「ローカル変数○○は使用されていません」の警告がなされ、モンスターの名前を表示しようとすると、配列にモンスターが入っていない趣旨のメッセージが出てエラーとなりました。なぜ拡張for文ではダメなのかが分からないので教えてもらいたいです。
発生している問題・エラー
Cannot invoke "characters.Monster.getSpecies()" because "m" is null
該当するソースコード
public class Test {
public static Monster create() {
int r = new java.util.Random().nextInt(4);
switch(r) {
case 0:
return new Dragon();
default:
return new Slime();
}
}
public static Monster[] makeArray() {
int r = new java.util.Random().nextInt(8) + 1;
Monster[] array = new Monster[r];
for(Monster m : array) {
m = create();
}
return array;
}
public static void main(String[] args) {
Monster[] array = makeArray();
for(Monster m : array) {
System.out.println(m.getSpecies());
}
}
}
自分で試したこと
元々は拡張for文ではなく、普通のfor文を使って書いていて、その時はエラーが出ませんでした。でもコードが煩雑な気がして拡張for文にしたところ先ほどのエラーが出ました。
0