2016-10-02 4 views
-1

私はDeital Program 10th Editionからエクササイズ(3.11)を行っています。私のプログラムにエラーはありませんが、引き出し金額がそれ以上の場合は残高が表示されます。 「残高不足」というメッセージのみが表示されるので、私はちょうど初心者です。WithDraw moneyアカウントから(Java)

私のメインプログラム

package practice; 
import java.util.Scanner; 
public class apple { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     tuna account1 = new tuna ("James" , 150000); 
     tuna account2 = new tuna ("David" , 5000); 
     System.out.printf("%s Balance: %.2f" , account1.getName(),account1.getBalance()); 
     System.out.printf("%n%s Balance: %.2f" , account2.getName(), account2.getBalance()); 
     System.out.print("\nEnter the Ammount that will add in James Account: "); 
     double depositAmmount = input.nextDouble(); 
     System.out.printf("Adding %.2f to James Account", depositAmmount); 
     account1.deposit(depositAmmount); 
     System.out.printf("%n%s Balance: %.2f" , account1.getName(),account1.getBalance()); 
     System.out.print("\nEnter the Ammount that will add in David Account: "); 
     depositAmmount = input.nextDouble(); 
     System.out.printf("Adding %.2f to David Account", depositAmmount); 
     account2.deposit(depositAmmount); 
     System.out.printf("%n%s Balance: %.2f" , account2.getName(),account2.getBalance()); 
     System.out.print("\nEnter the Ammount that will withdrawal from james Account: "); 
     double wD = input.nextDouble(); 
     System.out.printf("WithDrawal %.2f from James Account",wD); 
     account1.withDrawal(wD); 
     System.out.printf("%n%s Balance: %.2f" , account1.getName(),account1.getBalance()); 
    } 
     } 

であり、それはそれで一つの可能​​な解決策が機能は、それが成功したか否かを示すbooleanを返すことです

package practice; 

public class tuna { 
private String name; 
private double balance; 
public tuna (String name , double balance){ 
    this.name = name; 
    if (balance > 0) 
     this.balance = balance; 
} 
public void deposit(double depositAmmount){ 
    if (depositAmmount > 0) 
     balance = balance + depositAmmount; 
} 
public void withDrawal (double wD){ 
    if (wD > balance) 
     System.out.println("\nInsufficient Balance"); 
    else 
    balance = balance - wD; 
} 
public double getBalance(){ 
    return balance; 
} 
public void setName(String name){ 
    this.name = name; 
} 
public String getName(){ 
    return name; 
} 
} 
+0

正確な問題は何ですか? 'withDrawal'関数が' balance'変数を実際に修正したかどうか知りたいと思いますか?その場合、例えば、ブール値を返すようにすることができます(それが撤回された場合はtrueを返し、そうでない場合はfalseを返します)。 – UnholySheep

+0

私はちょうど払い戻し金額がそれよりも大きい場合は、そのアカウントの金額ではなく、「不十分な残高」というメッセージが表示されます。 –

+0

はい、それが私の提案で可能です。それ以外の場合は、printステートメントを 'withDrawal'関数の' if'ブランチに移動することもできます(これはIMOの醜い解決策です。 'boolean'を返すことになります) – UnholySheep

答えて

0

クラスです:

public boolean withDrawal (double wD){ 
    if (wD > balance) { 
     return false; 
    } 
    else { 
     balance = balance - wD; 
     return true; 
    } 
} 

および用途:

if(account1.withDrawal(wD)) { 
    System.out.printf("%n%s Balance: %.2f" , account1.getName(),account1.getBalance()); 
} 
else { 
    System.out.println("\nInsufficient Balance"); 
} 
+0

ありがとう –

関連する問題