定义具有三个三个属性“名称”,“ account_no”和“余额”的类帐户。创建帐户类的对象时,应设置名称和余额,帐户编号应为自动递增。此Account类必须具有两种方法,deposit()和withdraw()。
您的程序应包含三个参数 1.客户一 2.客户二 3.交易金额
输入格式: 客户名称1:帐户余额1客户名称2:帐户余额2转帐:交易金额
我正在尝试使用ARGV获取输入,但不确定如何获取格式的输入- ABC:2000 XYZ:3000传输:200
有什么建议吗?
答案 0 :(得分:0)
我不确定使用程序参数进行这种测试是否是一个好主意(我将使用具有所有可能转换的文件)。
如果在调用红宝石程序时仍想使用ARGV,则如下:ruby prog_name.rb ABC:2000 XYZ:3000 transfer:200
ARGV将如下所示:["ABC:2000", "XYZ:3000", "transfer:200"]
所以
我对文件使用的建议涉及gets
函数。基本上,您将创建一个包含以下内容的文件:
create_account ABC
create_account XYZ
deposit 2000 ABC
deposit 3000 XYZ
transfer 200 ABC XYZ
有了这些数据,您就知道自己在做什么和将调用什么函数,使用Account类的程序将具有以下结构:
require "account" # I'm supposing your $LOAD_PATH is correctly set
while (line = gets)
command, *params = line.split(' ')
case command
when 'create_account'
# Create an account with name = params.first
when 'deposit'
# Deposit params.first.to_i in account with name params[1]
when 'transfer'
# Make sure account with name params[1] has params.first.to_i in its balance
# Withdraw params.first.to_i from account with name params[1]
# Deposit params.first.to_i in account with name params[2]
else
puts "Unknown command #{command} in line #{line}"
end
end
通过这种方式,您只需要调用ruby program_name.rb dataset.txt
,它就会处理dataset.txt的所有行。您可以创建各种数据集,以确保您的客户经理执行正确的操作。 (因此,您需要在AccountManager类中进行转移方法并找到帐户方法。)