2014-09-21 99 views
1

我感覺好奇。在Java中,是否可以在方法中嵌套一個新創建的方法?我問這是因爲在我的書中有每個部分的這些練習練習(我目前在Objects/Classes上),並且有一個問題告訴你如果在同一個類中調用另一個方法時調用布爾方法爲true (在被稱爲布爾變量的類中變爲true)。這裏有一個例子:如果調用另一個方法調用方法

public void setTrue(int someRandomStuff) { 
    this.someRandomStuff = superRandomStuff; 
    // this is where the boolean variable comes into play 
    trueOrFalse = true; 
} 

現在我想知道是否有可能把裏面的這個方法調用的另一種方法,如果方法setTrue套「trueOrFalse」爲真?或者我是否必須完全創建另一種方法?我只是試圖這樣做,因爲我沒有真正閱讀任何說這是不可能的事情。我嘗試過這樣,IntelliJ並沒有真正顯示它是否錯誤,所以我會認爲它一定是可能的。

這裏就是我試圖進一步澄清我的意思:

public void setTrue(int someRandomStuff) { 
    this.someRandomStuff = superRandomStuff; 
    trueOrFalse = true; 
    if (trueOrFalse) { 
    public boolean getTrueOrFalse() { 
    return true; 
    } 
} 

我誠實地試圖瞭解爲什麼和如何工作他們的方式,而不是僅僅這樣做是因爲有人/有些事情告訴我,事情總是這樣。

如果你好奇的格式或想行使類似於此的書叫做:Introduction to Java, Comprehensive Version (9th Edition).

+0

你的代碼是沒有任何壓痕使這一切左對齊,使其難以閱讀,理解和調試。我已經通過給出一致的縮進來重新格式化發佈的代碼,並確保同一個塊上的所有代碼都在相同的縮進級別上。將來,你會想自己做這件事。您在此方面的合作將不勝感激,並且可能會提高您獲得體面和迅速答案的機會。 – 2014-09-21 01:33:46

+0

爲什麼不通過你的方法與參數? – shinjw 2014-09-21 01:36:12

+0

@HovercraftFullOfEels 對不起,界面在平板電腦上有點難以使用;突出顯示的文字提示我的iPad功能。 shinjw你是什麼意思?不完全理解你想要了解的內容,請澄清。 – 2014-09-21 01:40:41

回答

0

你不能嵌套你的方法。通過你的代碼來判斷它看起來像你想設置一個類變量。設置你的方法變量true和類變量true

boolean isMethodCalled = false; 

public void doMethod(int someRandomStuff) { 
    this.someRandomStuff = superRandomStuff; 
    isMethodCalled = true; 
} 

然後,您可以定義返回您trueOrFalse類變量

public boolean getIsMethodCalled() { 
    return isMethodCalled; 
} 

這時候doMethod被稱爲會讓isMethodCalled真正的另一種方法。否則isMethodCalled將返回false。

+0

嗯,我不確定這是什麼問題在書中的問題。我只想看看答案,梁(本書的作者)在本書的在線文本版本中沒有對這一部分的答案。該問題要求您創建一個返回true的方法,如果調用了另一個方法。那就是,在方法中 - 被稱爲 - 它將您的布爾變量設置爲true。所以這些應該是兩個獨立的方法。這就是我沒有得到,爲什麼我問這個問題。 – 2014-09-21 01:47:33

+0

您需要設置類變量才能實現此目的 – shinjw 2014-09-21 01:48:29

+0

哦,剛剛在刷新頁面後看到了您的編輯,這與我接下來要問的內容非常接近 - 在我的編輯中。變量'methodTrueOrFalse'你沒有必要聲明它的類型,還是被忽略? – 2014-09-21 01:50:36

0

不,你不能有內的另一個方法的方法定義,方法必須分別在類定義的,代碼將不會編譯

0

不,你不相互嵌套方法,你將它們全部列在一個類中。但是,您可以在同一個班級中使用另一種方法調用一種方法。我假設你已經做了很多次了。所以它看起來像:

public class Something { 
    public void methodOne() { 
     // does something 
    } 

    public int methodTwo() { 
     // does somethingElse 
    } 

    public void methodThree() { 
     int variable = methodTwo(); 
    } 
} 
0

不允許在java中嵌套方法。它會給編譯錯誤。如果您的要求需要從一種方法調用另一種方法,您可以在與private相同的類中聲明您的方法並調用它們。

public class MethodNesting { 
    public void method() { 
     myinnerMethod(); 
    } 

    private void myinnerMethod() { 
     // Do Something 
    } 
} 

,如果你想知道更多的看看這

Can methods in java be nested and what is the effect?

相關問題