2013-05-01 98 views
0

我遇到了以下問題......我刪除了代碼中沒有的重要部分,因此它不那麼令人困惑。所有其他符號/變量已被定義或初始化。整數初始化和方法錯誤

基本上我想要做的是這樣的:

numsalchange是在一個循環中,如果indsaldif數組中的值是0。如果他們確定一個單獨的方法,它當然遞增變化。

更改將在稍後發送到要顯示的報告方法。我用幾種不同的方式嘗試了幾種不同的方式,值和肯定不會等於0.但是,每次更改輸出爲0時,我知道它肯定是別的東西。

我已經試過剛剛宣佈的變化

int change; 

,然後設置其作爲法爲零,但它不會讓我將其發送到方法,無需在主被初始化。

我有一種感覺,它在報告方法中顯示爲0,因爲它被初始化爲零併發送報告爲0而不是更新的值。

public static void main blah(String[] args){ 

int change = 0; 
numsalchange (userinput, change, indsaldif); 
report (userinput, oldsalary, newsal, indsaldif, change); 


public static void numsalchange(String[] userinput, int change, double[] indsaldif){ 



    for (int i=0; i<userinput.length; i++){ 

     if(indsaldif[i] != 0){ 
      change++;}}} 
    public static void report(String[] userinput, double[] oldsalary, double[] newsal, double[] indsaldif, int change){ 

      DecimalFormat twoDigits = new DecimalFormat("0.00"); 
      double saldiff = 0; 
      for(double i : indsaldif) { 
        saldiff += i; 
       } 
      String toString;       
      StringBuilder sb = new StringBuilder(64); 
      sb.append("PB Incorporated Salary Report \n"); 
      for (int i = 0; i < userinput.length; i++) { 
      sb.append("---------- \nEmployee:"+ userinput[i] + "\nOld Salary: $"+ twoDigits.format(oldsalary[i]) + "\nNew Salary: $" + twoDigits.format(newsal[i]) + "\nSalary Change: $" + twoDigits.format(indsaldif[i])+"\n"); 
       //** 
           } 
       sb.append("---------- \nTotal Employee Salary Increase: $" + twoDigits.format(saldiff) + "\n# of Salary Increases: " + change); 
       JOptionPane.showMessageDialog(null, sb.toString());} 

} 

回答

2

change變靜態字段當您在change傳遞給你的方法,Java的傳遞該值的副本。該方法可能會更改副本,但不會反映在您在main中聲明的原始change中。

爲了在整個課程中保持您的change計數,請numsalchange聲明局部變量初始化爲0,並且它可以按照它認爲合適的方式增加它。那麼它應該爲return那個值,而main可以將返回值加到change

1

您可以從numsalchange

change = numsalchange (userinput, change, indsaldif); 
    ... 

public static void numsalchange(String[] userinput, int change, double[] indsaldif){ 
    ... 
    return change; 
} 

返回變化也可能使你的類

private static int change;