javanの勉強中にエクリプスでソースコードを実行していた際にこのようなエラーメッセージが出てきてしまい困っています。
Exception in thread "main" java.lang.StackOverflowError
at auderworld.Enemy1k.<init>(Enemy1k.java:12) //1
at auderworld.Hero.<init>(Hero.java:14) //2
//1と//2に関しては何行も連なって出てきていますのでここでは割愛させていただきます。
ソースコードが問題なのかとも思いましたが、私が見る限りソースコードに不備は見当たりません。しかしソースコードも一応載せておきます。
package名は underworld
でクラスは3つです。
1 Main.javaクラス
package auderworld;
public class Main {
public static void main(String[] args) {
Hero h1 = new Hero();
Enemy1k e1 = new Enemy1k();
h1.appaer();
e1.appaer();
}
} //他のクラスを呼び出すクラス
2 Hero.javaクラス
package auderworld;
public class Hero {
String name ;
int hp;
int level;
Hero(){ this.name = "ヤス"; this.hp =100; this.level =1; } Enemy1k e = new Enemy1k(); void status() { System.out.println("勇者"+this.name+"\nlevel"+this.level+"\nhp"+this.hp); } void appaer() { System.out.println(this.name+"が現れた!"); } void sleep() { this.hp +=100; System.out.println(this.name+"は眠った"); System.out.println("hpは100回復した"); } void slip() { this.hp -=5; System.out.println(this.name+"は、転んだ"); System.out.println("5ダメージを受けた"); } void sit(int sec) { this.hp += sec; System.out.println(this.name+"は座った"); System.out.println("hpは、"+sec+"回復した"); } void atack() { e.hp1 -=40; System.out.println(e.name1+"は、"+e.name1+"から攻撃を受けた"); System.out.println(e.name1+"に40のダメージ!"); }
}
// RPGゲームの主人公クラス
3 Enemy1k.java クラス
package auderworld;
public class Enemy1k {
String name1;
int hp1;
final int level1 =5;
Enemy1k(){ this.name1 = "毒キノコ"; this.hp1 = 60; } Hero h1 =new Hero(); void status() { System.out.println("敵"+this.name1+"\nHP"+this.hp1+"\nlevel"+this.level1); } void appaer() { System.out.println(this.name1+"レベル"+this.level1+"現れた!"); } void atack() { h1.hp=40; System.out.println(this.name1+"の攻撃"); System.out.println("毒ガス攻撃により"+h1.name+"のhpは40減少した!"); } void escape() { System.out.println(this.name1+"逃げて行った"); }
}
//RPGゲームの敵役クラス
といったソースコードになります。ネットで検索してみましたがメモリーの使用上限を超えた際に出るエラーとの情報は得られましたがはっきりとした解決策が出てこずこの場を借りてご質問させていただきます。お忙しい中とは思いますが、どなたかアドバイスをよろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー