簡體   English   中英

使用命令行參數輸入

[英]Input using command line arguments

定義一個具有三個三個屬性“name”、“account_no”和“balance”的類 Account。 Name 和 Balance 在創建 Account 類的對象時需要設置,account_number 應該是自動遞增的。 這個 Account 類必須有兩個方法,deposit() 和withdraw()。

您的程序應該采用三個參數 1. 客戶一 2. 客戶二 3. 交易金額

輸入格式:customer_name1:account_balance1 customer_name2:account_balance2 transfer:transaction_amount

我正在嘗試使用 ARGV 獲取輸入,但不確定如何以格式獲取輸入 -- ABC:2000 XYZ:3000 transfer:200

有什么建議 ?

我不確定將程序參數用於這種測試是否是個好主意(我將使用包含所有可能轉換的文件)。

如果您在調用 ruby​​ 程序時仍想使用 ARGV: ruby prog_name.rb ABC:2000 XYZ:3000 transfer:200 ARGV 將如下所示: ["ABC:2000", "XYZ:3000", "transfer:200"]
所以

  • ARGV[0] 是“customer_name1:account_balance1”(使用 split(':') & to_i 來獲得正確的值)
  • ARGV[1] 是“customer_name2:account_balance2”
  • ARGV[2] 是 "transfer:transaction_amount"

我對文件使用的建議涉及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 類中創建 transfert 方法並找到帳戶方法)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM