亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我會收到堆棧溢出?

為什么我會收到堆棧溢出?

慕婉清6462132 2022-07-06 16:51:12
我的第一個代碼塊是我的項目對象文件;第二個是主類。在代碼運行沒有任何問題之前,但在我添加了讀寫文件之后,我的代碼開始收到堆棧流錯誤。只是調用錯誤的片段。    public class Item implements java.io.Serializable {    public static String name;    public static double price;    public static double amount;    public int max = 1;    SlayerProgram sp = new SlayerProgram();    ReadFile rf = new ReadFile();    public Item(String name, double price,double amount )    {    this.name = name;    this.price = price;    this.amount = amount;    }    public void ItemSet(String name, double price,double amount)    {    this.name = name;    this.price = price;    this.amount = amount      }我的主要課程:    public class SlayerProgram {//import file txts, and Item Class        static String name;        static double price;        static double amount; Item item = new Item(name,price,amount);ReadFile rf = new ReadFile();static String fileNameText = "D:\\Game\\SlayerProgram\\Name.txt";static String filePriceInt = "D:\\Game\\SlayerProgram\\Price.txt";static String fileAmountInt ="D:\\Game\\SlayerProgram\\Amount.txt";   //begin file Read   public void BeginText() throws IOException{    TextFile();}public void Max(){    item.Max();}    //declare needed Data Types;        final int max = item.max;        ArrayList<String> Name  = new ArrayList<>();        ArrayList<Double> Price = new ArrayList<>();        double size = Price.size();        ArrayList<Double> Amount = new ArrayList<>();Exception in thread "main" java.lang.StackOverflowErrorat slayerprogram.Item.<init>(Item.java:18)at slayerprogram.SlayerProgram.<init>(SlayerProgram.java:25)at slayerprogram.Item.<init>(Item.java:18)at slayerprogram.SlayerProgram.<init>(SlayerProgram.java:25)如何找到導致堆棧溢出的位置?
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

Item創建SlayerProgram

SlayerProgram sp = new SlayerProgram();

SlayerProgram創造Item

Item item = new Item(name,price,amount);

因此,在初始化時,您將無休止地創建這些對象

有一個類似的Baeldung 示例用于獲取 StackOverflowError

這以 StackOverflowError 告終,因為 ClassOne 的構造函數正在實例化 ClassTwo,而 ClassTwo 的構造函數又在實例化 ClassOne。


查看完整回答
反對 回復 2022-07-06
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

因為和類之間存在circular依賴關系。您已經在 class和in class中創建了。所以當你嘗試創建它的對象時,它會嘗試創建它的對象,然后嘗試創建它的對象,它仍然會繼續并導致。ItemSlayerProgramItem item = new Item(name,price,amount);SlayerProgramSlayerProgram sp = new SlayerProgram();ItemItemSlayerProgramSlayerProgramItemmethod stack is not fullStackOverflow



查看完整回答
反對 回復 2022-07-06
  • 2 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號