簡體   English   中英

Java中的對象不會在主類中執行

[英]Objects in java won't execute in main class

我有點編程的菜鳥。 大約2個月前開始,並且一直在努力變得更好。 我剛開始研究面向對象的東西,但遇到了一些麻煩。 我寫了這個測試程序,但是沒有一個可以執行。 它沒有任何錯誤,但是在控制台中重復

"Exception in thread "main" java.lang.StackOverflowError
at userinput.<init>(userinput.java:4)
at DialogueOption.<init>(DialogueOption.java:5)

一遍又一遍地。 這是三個類。 抱歉,如果有任何格式錯誤。

一等艙

public class window{

public static void main(String args[]){

    DialogueOption Dialogue1 = new DialogueOption();
    userinput userin = new userinput();

    Dialogue1.responseList();
    userin.FIResponse();

    Dialogue1.dialogueOP();

    while(Dialogue1.badinput = true);
        Dialogue1.responseList();
        userin.FIResponse();
        Dialogue1.dialogueOP();

    }   
}

二等

public class DialogueOption extends window {
int DialogueOp1;
window win = new window();
userinput userin = new userinput();
public boolean badinput;

public void responseList(){
    System.out.println("Get out of bed, you lazy ****.");
    System.out.println("1. **** you, bro. I'm staying in bed.");
    System.out.println("2. Fine, lets go to class.");
    System.out.println("3. Eh?");


}


public void dialogueOP() {

        userin.FIResponse();

        switch(userin.Response){
        case 1:
            System.out.println("**** you then");
            break;
        case 2:
            System.out.println("Good guy");
            break;

        }

        if(userin.Response >= 3){
            System.out.println("Bad input, try again.");
            badinput = true;
        }
    }
}

三等

import java.util.Scanner;

public class userinput extends window {
    DialogueOption Dialogue1 = new DialogueOption();
    public int Response;

    public void FIResponse(){
    Scanner input = new Scanner(System.in);
    int response = input.nextInt();
    Response = response;

    }
}

DialogueOption您正在創建一個userinput ,后者又在創建一個DialogueOption對象。 這將創建一個鏈,該鏈將繼續初始化對象,直到最終遇到stackoverflow異常為止。

您需要更改設計,以避免這種循環依賴性。

另請注意,替換while(Dialogue1.badinput = true); with while(Dialogue1.badinput == true); while(Dialogue1.badinput);

檢查一下:您的new DialogueOption()創建一個新的userinput userin = new userinput(); 這將創建一個新的DialogueOption Dialogue1 = new DialogueOption(); 這將創建一個新的userinput userin = new userinput();

這會一直持續下去,直到達到stackoverflow。

按照定義,類也以大寫開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM