- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在类里面使用一种收费的方法。方法是这样的:
public double chargeFee()
{
balance -= 10;
return balance;
}
但是,它会减去 20。我尝试重新编译它,但找不到导致问题的原因。
完整代码:
public class ManageAccounts
{
public static void main(String[] args)
{
Account acct1, acct2;
//create account1 for Sally with $1000
acct1 = new Account(1000, "Sally", 1111);
acct2 = new Account(500, "Joe", 2222);//create account2 for Joe with $500
System.out.println("Depositing $100 into Account 2222...");
acct2.deposit(100.00);//deposit $100 to Joe's account
System.out.println("New Balance for Account 2222: $" + acct2.getBalance());//print Joe's new balance (use getBalance())
System.out.println();
System.out.println("Withdrawing $50 from Account 1111...");
acct1.withdraw(50);//withdraw $50 from Sally's account
System.out.println("New Balance for Account 1111: $" + acct1.getBalance());//print Sally's new balance (use getBalance())
System.out.println();
acct1.chargeFee();
acct2.chargeFee();//charge fees to both accounts
System.out.println("Charging usage Fees...");
System.out.println("Account balance after fees:");
System.out.println("Account 1111: $" + acct1.chargeFee());
System.out.println("Account 2222: $" + acct2.chargeFee());
System.out.println();
System.out.println("Changing name on Account 2222...");
acct2.changeName("Joseph");//change the name on Joe's account to Joseph
System.out.println();
System.out.println("Printing account summaries...");
System.out.println(acct1.toString());
System.out.println(acct2.toString());//print summary for both accounts
}
}
import java.text.NumberFormat;
public class Account
{
private double balance;
private String name;
private long acctNum;
NumberFormat money = NumberFormat.getCurrencyInstance();
//----------------------------------------------
//Constructor -- initializes balance, owner, and account number
//----------------------------------------------
public Account(double initBal, String owner, long number)
{
balance = initBal;
name = owner;
acctNum = number;
}
//----------------------------------------------
// Checks to see if balance is sufficient for withdrawal.
// If so, decrements balance by amount; if not, prints message.
//----------------------------------------------
public void withdraw(double amount)
{
if (balance >= amount)
balance -= amount;
else
System.out.println("Insufficient funds");
}
//----------------------------------------------
// Adds deposit amount to balance.
//----------------------------------------------
public void deposit(double amount)
{
balance += amount;
}
//----------------------------------------------
// Returns balance.
//----------------------------------------------
public double getBalance()
{
return balance;
}
//----------------------------------------------
// Returns a string containing the name, account number, and balance.
//----------------------------------------------
public String toString()
{
return ("Name: " + name + "\tAccount Number: " + acctNum + "\tBalance: " + money.format(balance));
}
//----------------------------------------------
// Deducts $10 service fee
//----------------------------------------------
public double chargeFee()
{
balance -= 10;
return balance;
}
//----------------------------------------------
// Changes the name on the account
//----------------------------------------------
public void changeName(String newName)
{
name = newName;
}
}
一些示例输出:
Depositing $100 into Account 2222...
New Balance for Account 2222: $600.0
Withdrawing $50 from Account 1111...
New Balance for Account 1111: $950.0
Charging usage Fees...
Account balance after fees:
Account 1111: $930.0
Account 2222: $580.0
Changing name on Account 2222...
Printing account summaries...
Name: Sally Account Number: 1111 Balance: $930.00
Name: Joseph Account Number: 2222 Balance: $580.00
最佳答案
您在两个帐户上调用了两次 chargeFee
,一次是在您收取实际费用时,另一次是在您打印结果时。
为了将来引用,有一个名为 "Seperate command and query" 的指南, 或 CQS。你可能想阅读它。了解您的情况:
chargeFee
作为查询(即,您返回余额)chargeFee
作为命令,扣钱。更改 chargeFee
以返回一个 void
(如果您想要方法链接,则返回 this
),您就不会不小心将其用作查询。
关于java - 余额 -= 10,但减去 20?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638497/
我有两个列表,我想从 neg 中减去列表 pos 中元素的频率。所以: neg = [x for x in all[:800000]] pos = [x for x in all[800000:]]
我有两个列表,我想从 neg 中减去列表 pos 中元素的频率。所以: neg = [x for x in all[:800000]] pos = [x for x in all[800000:]]
我正在尝试减去 2 个标准逻辑向量并得到错误 p2 <= p1(11 downto 0)- idata(11 downto 0); Error (10327): VHDL error at sub.v
我将以下代码嵌入到类中。每当我运行 distToPoint 时,它都会给出错误“不支持的操作数类型 -: 'NoneType' 和 'float'” 我不知道为什么它会返回 NoneType 和如何让
这一直让我想知道, 假设我有这种情况: select (...long sub query..) - (...long sub query..) 我想把 - 放在条件中,这意味着有时它会是 - 有时是
我有两个 vector 。我需要从 vector1 中删除 vector2 中的内容。 [编辑:不清楚这是否意味着按照下面的链接或设置差异进行逐元素减法] 我使用 Visual Studio 2010
我有一张这样的 table : id product_property_id product_id amount type 1 1 145 10
我有两个 boolean 值列表 buy_machine 和 broken_machine。我想创建第三个列表 working_machines,它是购买的机器数量的总和并减去坏机器的数量。 我尝试了
我似乎可以解决这个问题。我有两个来自 sql 的访问者/国家/地区列表 us,us,uk,fr,uk,uk,uk 和 us,uk 我用 array_count_values() 将它们制成数组: Ar
我在 javascript 中减去时间时遇到了麻烦,尽管我已经谷歌搜索了 2 天但没有任何运气:( 我正在尝试为调查问卷计时。当用户开始调查问卷时,会记录时间戳。当用户完成/单击提交时,会记录新的时间
我正在尝试对 flex 搜索中索引的字段进行一些分析。 其中两个字段是“start_time”和“end_time”。我基本上希望将这两个字段的差异分组,即('end_time'-'start_tim
我有一个函数,它接收两个 BigDecimal 数字,即 bd1 和 bd2 作为参数。该函数应减去 bd1 - db2 并返回 bd1 和 bd2 的小数位数均为 2,结果的小数位数也应仅为 2但使
根据ldt_code中的ld源代码here。没有将dl_main传递给phdr的上下文,我对为什么通过减去虚拟地址来推断main_map的加载地址有些困惑。 我跟踪过的代码: 1124 static
我进行了多次重复测量的治疗,我想减去每次治疗的每个时间点的对照值。数据集的形状是这样的,有多年、物种和处理。 ID Year Species Treatment value 1 2010 x
我正在尝试查找一次旅行的矩形区域,可以在此处找到更多上下文 我在下面的代码中遇到的错误是: "Exception in thread "main" java.lang.ArrayIndexOutOfB
我一直在尝试使用 pandas dataframe 减去我读入 python 的列之间的日期和时间。我写的代码如下: Time = df['t'] - df['t'].shift(1) + df['t
I want to subtract all values in a[nn,...,0] by b[nn] while keeping the original structure of the ar
假设我有两个列表:List l1,和 Listl2 请帮助我如何在 2 个列表之间合并、减去和相交。谢谢。 注意:我使用的是 .NET 2.0,所以我不能使用 LINQ。谢谢。 最佳答案 以下是伪代码
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我正在尝试运行以下代码: extern crate unicase; use unicase::UniCase; use std::collections::HashSet; fn main() {
我是一名优秀的程序员,十分优秀!