2013-10-24 53 views
1

好吧,所以我是編程新手(不要嘲笑我,如果我問一個問題很容易)。 我的代碼示例如下:我無法找到我應該在我的回覆聲明

public int calcGCF(int mya, int mye, int myf, int myj) 
{ 
    x = myj * myf; 
    y = mye* mya; 

     while(x != 0 && y != 0) 
     { 
      if(x % y == 0) 
      { 
       remainder = y; 
      } 

     int gcf; 
     gcf = y; 
     y = x % y; 
     x = gcf; 
     } 
} 

好的。所以這個代碼是爲了潛在地解決用戶輸入的任何問題的派生。解決衍生問題的一部分是獲得2個數字的gcf並將其分解。當我嘗試編譯這段代碼時,它說我缺少一個return語句。我明白那是什麼,但是當我試圖說「歸還剩餘」時它說它可能沒有被初始化。有人可以告訴我在這段代碼中我做錯了什麼,並幫助我在我的回覆聲明中加入什麼?謝謝!順便說一下,這是與Java代碼。

回答

4

變量x,yremainder在哪裏申報?我沒有在您發佈的代碼中的任何地方看到int remainder;聲明。該方法中也沒有return語句,所以它不會編譯。

局部變量(即你的方法內聲明的變量)必須使用它們之前,任何地方你讀值的值進行初始化。如果你這樣做,例如:

public int method(int a) { 
    int value; 

    if (a > 10) { 
     value = 99; 
    } 

    return value; 
} 

然後你會得到你所得到的是同樣的錯誤,因爲在案件a不大於10,變量value沒有分配任何值,當你到達return聲明 - 所以Java不知道什麼值返回。

您必須確保value在任何可能的情況下分配一個值。

+0

感謝這真的幫助 –

0

如你所願,你可以返回餘數。只需將您的餘數初始化爲一個值。例如:餘數= 0;

0

我明白那是什麼,但是當我嘗試說「return remaining;」時它說它可能沒有被初始化。

所以你只需要聲明,在你的代碼的頂部,是這樣的:

remainder = 0; 

我也覺得不僅僅是myj多一點適當地命名變量。

相關問題