2016-10-18 17 views
2

開始クラスのメインメソッドでユーザーが入力した内容に基づいて変更できるcheqingsおよびsavingsアカウントがあるATMクラスを持つプログラムを作成しています。何らかの理由により、ユーザーが口座に入金/出金する金額を入力すると数学は行われますが、値は保管されません。そのために、私は口座残高を表示するために行くと、両方の口座は、彼らの出発価値にあります。メインメソッドの値を別のクラスから変更する方法

public class ATM { 

private double cheqBal; 
private double savingsBal; 
private String bankName; 

public ATM(double cheq, double savings, String name) { 
    cheqBal = cheq; 
    savingsBal = savings; 
    bankName = name; 
} 

public double getCheq() { 
    return cheqBal; 
} 
public double getSavings() { 
    return savingsBal; 
} 
public String getName() { 
    return bankName; 
} 

public void setCheq(double cheq) { 
    cheqBal = cheq; 
} 
public void setSavings(double savings) { 
    savingsBal = savings; 
} 
public void setName(String name) { 
    bankName = name; 
} 

public double depositCheq(double cheq) { 
    if (cheq < 0) { 
     System.out.println("Sorry you cannot do that!"); 
    } else { 
     cheqBal += cheq; 
    } 
    System.out.println(getCheq()); 
    return cheqBal; 
} 

お金の入金/引き出し方法があるATMクラスがあります。私は預金のchequing方法を示した。

double savBal = 500; 
     double cheqBal = 1000; 

     ATM bank1 = new ATM(cheqBal, savBal, "BMO"); 

     String userChoice = JOptionPane.showInputDialog("1: Deposit Cheqings \n2: Deposit Savings \n" 
       + "3: Withdraw Cheqings \n4: Withdraw Savings \n5: Show Balance\n6: Exit"); 
     int choice = Integer.parseInt(userChoice); 

     if (choice == 1) { 
      String cheqIn = JOptionPane.showInputDialog("How much would you like to deposit?: "); 
      bank1.depositCheq(Double.parseDouble(cheqIn)); 
      cheqBal = bank1.getCheq(); 
     } else if (choice == 2) { 
      String savIn = JOptionPane.showInputDialog("How much would you like to deposit?: "); 
      bank1.depositSavings(Double.parseDouble(savIn)); 
      savBal = bank1.getSavings(); 
     } else if (choice == 3) { 
      String cheqOut = JOptionPane.showInputDialog("How much would you like to withdraw?: "); 
      bank1.withdrawCheq(Double.parseDouble(cheqOut)); 
      cheqBal = bank1.getCheq(); 
     } else if(choice == 4){ 
      String savOut = JOptionPane.showInputDialog("How much would you like to withdraw?: "); 
      bank1.withdrawSavings(Double.parseDouble(savOut)); 
      savBal = bank1.getSavings(); 
     }else if(choice == 5){ 
      bank1.toString(); 
     }else if(choice == 6){ 
      break; 

主な方法があります。私がお金を預金するために1を押すと、私がバランスを見せるために5を押したときに入金した金額が繰り返されます。 (すべてのメインメソッドがループしているので、終了するまで続きます)。

ご迷惑をおかけして申し訳ありませんが、私の問題を理解して助けてくれることを願っております!

+1

メインメソッドの値を別のクラスから変更することはできません。 Javaは参照渡しではなく、渡し渡しです。メンバー変数、つまり同じ変数にアクセスできるものだけを変更できます。 –

+1

メインメソッドで変更したい値を返す必要があります。 –

+0

[Javaが「参照渡し」または「渡し渡し」の可能性がありますか?](http://stackoverflow.com/questions/40480/is-java-pass-by-reference-orpass -by-value) –

答えて

1

ループを実行するたびに新しいATMオブジェクトが作成され、開始値がコンストラクタに渡されるため、この新しいオブジェクトの値が表示され、古いオブジェクトが破棄されます。

関連する問題