0

我在以下方面遇到了麻烦......我已经删除了代码中不重要的部分,所以它不会那么混乱。所有其他符号/变量已被定义和/或初始化。

基本上我想要做的是:

numsalchange 是一个单独的方法,它在循环中确定 indsaldif 数组中的值是否为 0。如果是,它当然是递增变化。

稍后将更改发送到要显示的报告方法。我已经尝试了几种不同的方法,其值将绝对等于 0。但是,每次更改都输出为 0,而我知道它肯定应该是其他值。

我尝试将更改声明为

int change;

然后在方法中将其设置为零,但它不会让我将其发送到方法而无需在 main 中初始化。

我有一种感觉,它在报告方法中显示为 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());}

}
4

2 回答 2

2

当您传入change您的方法时,Java 会传递该值的副本。该方法可能会更改副本,但不会反映在change您在main.

为了change在整个班级中保持计数,请numsalchange声明一个初始化为 0 的局部变量,并且它可以根据需要增加它。然后它应该return是那个值,并且main可以将该返回值添加到change.

于 2013-05-01T21:43:32.947 回答
1

您可以从 numsalchange 返回更改

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

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

你也可以让你change的类的变量静态字段

private static int change;
于 2013-05-01T21:43:25.637 回答