2017-05-08 86 views
0

對不起,如果這是一個令人困惑的問題或重複。所以我有一個名爲「Driveable」的布爾方法,如果這是真的,我想打印出汽車的行駛速度。然後我也想展示這款車是什麼樣的。但是,我想傳遞int「速度」,並會在我調用該方法時輸入參數。但是,當我在「gearChange」方法中調用此方法時,它要求輸入一個整數,我不想輸入不過,我想通過已經在「速度」方法中輸入的參數。那麼在另一種方法中再次調用該方法時,是否可以傳遞一個參數或返回值?再次抱歉,這個令人困惑的問題。我意識到可能有其他方式來獲得我的答案,但爲了將來的參考,我想知道這樣的事情是否可能。所以我不太關心下面的代碼或者做出改變,更多的是做這種事情的可能性。以另一種方法再次調用方法時是否可以使用返回值作爲參數

public static int speed(int speed){ 

    if(driveable()){ 

    System.out.print(" you are going " + speed + " miles per hour"); 
    return speed; 
    }else{ 

    System.out.print("The car is not drive able"); 
    return -1; 

    } 

} 

public static void gearChange(){ 
    //here: 
    if(speed(speed) >= 1 && speed(speed) <= 20){ 

     System.out.print("You are in first gear"); 

    etc... 

} 

speed(int 15); 

gearChange(); 
+4

你不清楚你在問什麼,請正確格式化你的代碼。 –

+0

我可以問問它沒有正確格式化嗎?或者什麼可以使其格式正確?它是間距嗎?抱歉! –

回答

0

歡迎來到SO。

是的,你可以在方法外設置變量。注意:這不是很清晰的代碼,但是我將它包含在內以演示如何在方法之外設置變量。我還稍微更新了命名以區分變量。

private int currentSpeed; 

public static boolean driveable() { 

    return true; //or whatever your logic may be 
} 

public int testSpeed(int speed) { 

    if (driveable()) { 

     System.out.print(" you are going " + speed + " miles per hour"); 
     this.currentSpeed = speed; 
     return speed; 
    } 

    else { 

     System.out.print("The car is not driveable"); 
     this.currentSpeed = speed; 
     return -1; 
    } 

} 

public void gearChange() { 

    if (testSpeed(this.currentSpeed) >= 1 && testSpeed(this.currentSpeed) <= 20) { 
     System.out.print("You are in first gear"); 
    } 

} 

@Test //run in Junit to see the output 
public void testIt() { 

    testSpeed(15); 
    gearChange(); 

} 

在很多情況下,你可以使用getter和setter方法(getX()setX()訪問值(除非你正在做一些函數式編程)。

注意,你也將會是調用testSpeed()方法多次。

你想重溫這樣的設計,讓你想完成它不清楚是什麼。

+0

非常感謝bphilipnyc!這正是我正在尋找的!我必須確保下次再添加「this.currentSpeed」這個字段!我現在只編寫了一個月左右的代碼。如果你有時間,你能解釋我如何讓我的代碼更易理解嗎?或者這只是帶有經驗的東西?我的代碼和你的看起來和我非常相似(除了「this.currentSpeed」),但我確信我錯了哈哈。 –

+0

不幸的是,艾倫,SO不適合這種類型的東西。您可以嘗試https://codereview.stackexchange.com/來查找您正在尋找的答案。這也是一個非常有用的領域。一開始可能會非常令人沮喪。掛在那裏。 – bphilipnyc

0

你應該有一個對象(例如汽車),其中您可以設置速度並在其中調用setSpeed(int speed)方法,這樣當您調用同一對象的方法gearChange()時,您可以檢索當前速度(還應該檢查它是否已設置或接受如果沒有設置,則零有更正)。

我認爲如果你想在Java中感到舒適,你需要更多地熟悉OOP。

+0

嘿!感謝你的幫助! 「POO」是什麼意思是爲他人編程?對不起,如果我的編碼是非常草率的。除了繼續練習之外,還有哪些建議可以改進? –

+0

對不起,我一定忘了英文是面向對象編程(OOP)。用法語說我們說公安條例。 –

相關問題