写了一个统计收益的小程序,代码如下:
require 'sqlite3'
rqq=ARGV[0]
rqz=ARGV[1]
def gs(s)
if /([0-9][0-9][0-9][0-9])-([0-9])-([0-9])/=~ s.to_s
y=$1
m=$2
d=$3
return sc="#{y}-0#{m}-0#{d}"
end
if /([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9])/=~ s.to_s
y=$1
m=$2
d=$3
return sc="#{y}-#{m}-0#{d}"
end
if /([0-9][0-9][0-9][0-9])-([0-9])-([0-9][0-9])/=~ s.to_s
y=$1
m=$2
d=$3
return sc="#{y}-0#{m}-#{d}"
end
end
rqq_1=gs(rqq)
rqz_1=gs(rqz)
puts "起始时间:#{rqq_1}"
puts "终止时间:#{rqz_1}"
sql="select sum(sy) from nhk where rq>'#{rqq_1}' and rq<'#{rqz_1}'"
db=SQLite3::Database.new('/Users/sai/Desktop/ruby/nhk/sy.db')
sc=db.execute(sql)
sc.each do |sc_1|
puts "共:#{sc_1}元"
end
运行结果,如下:
sai@superdeMacBook-Pro ~ % ruby /Users/sai/Desktop/ruby/nhk/sycx2.rb 2023-3-1 2023-3-16
起始时间:2023-03-01
终止时间:2023-03-01
共:[nil]元
第二个参数感觉传不进去,或者是“设置参数格式“的函数没有重置导致结果出现问题。请问这个怎么弄?
格式的参数不匹配,看看什么情况。
参考GPT和自己的思路:
根据你的代码,第 2 行和第 3 行分别将传递给程序的第一个和第二个参数存储在变量 rqq 和 rqz 中。然后在第 28 行中,程序使用这些变量的值构建 SQL 查询语句。通过你提供的输出结果可以看出,程序似乎没有正确处理第二个参数。
可能的问题可能是:
传递到程序的第二个参数的值不符合预期。请确保第二个参数是一个有效的日期格式。
在处理第二个参数之前,您需要首先验证它是否存在。在行 3 中使用 if 语句检查 ARGV 的大小,以确保在处理它们之前提供了足够的参数。
某些其他错误也可能导致无法处理第二个参数的问题。您可以尝试使用调试工具(如 Pry)在程序的不同部分中添加中断点,以寻找问题的根本原因。
希望这些建议可以帮助您找到问题的解决方案。