2014-03-26 26 views
0

我是編程新手,無法確定如何在代碼的另一部分編寫代碼時調用方法。下面是整個代碼的一部分(不是所有的),但是我真的很感激,如果有人不僅可以糾正這個問題,而且可以解釋我做錯了什麼?我正在參加在線課程,教授有點難以聯繫!在Java中擲骰子分配:調用方法

while (x == 'y'){ 

int roll = 1; 

System.out.println("Roll " + roll); 

roll++; 

System.out.println(RollTheDice(dA, dB)); 
} 

} 

public static int RollTheDice(int dA, int dB){ 
    int A = (int)(Math.random() * 6 + 1); 
    int B = (int)(Math.random() * 6 + 1); 

    System.out.println(A + "\n" + B); 

    int sum = (A + B); 

    if (sum == 7) 
     System.out.println("Craps!" + "\n"); 
    else if (sum == 2) 
     System.out.println("Sanke eyes!" + "\n"); 
    else if (sum == 12) 
     System.out.println("Box cars!" + "\n"); 

    return A + B; 

} 
+0

'static'方法必須從'static'上下文中調用。 – Maroun

+0

你需要粘貼整個代碼才能正確解釋給你! – Ritikesh

+2

粘貼一個編譯,運行並解釋其行爲中出乎意料的程序。如果它不能編譯,請粘貼確切的錯誤。 –

回答

2

首先,通過while循環中聲明roll,該值將永遠爲1或2,因爲它會做,在每次循環迭代。需要聲明的是,循環之前:

int roll = 1; 
while(x == 'y') { 
    roll++; 
} 

接下來,您RollTheDice功能不與你傳遞給它(即dAdB使用,仍在AB被用來代替),所以它的任何變量無關緊要。

最後,如果您沒有聲明dAdB作爲while循環上方的變量,則函數調用將失敗。您需要將實際值傳遞到呼叫像這樣:

RollTheDice(1, 6); 
0

嗯,首先,你有一個while循環與條件while (x == 'y') - 但你永遠不會改變x的值。這樣做的結果是循環永遠不會結束(無限循環)。

您的下一個問題是您沒有定義調用上下文中的dA和dB,只能在靜態函數中定義。由於被調用的函數定義了兩個參數作爲整數,因此當調用它時,應該將其稱爲RollTheDice(5, 6),或者應該將int值分配給dA和dB(順便說一句,您知道當您調用該函數時,該調用不必與函數參數中的變量具有相同的名稱,對嗎?)。

int xA = 5; 
int xB = 6; 
System.out.println(RollTheDice(xA, xB)); 

最後,這一切都是假設,有一個失蹤void Main() {線在頂部。