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());}

}
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 に答える