任何人都可以告诉我应该使用什么以及为什么这种方法不正确?代码不起作用,我知道,我只是想知道如何与这种类型的数据接口。
谢谢。
代码:
$i = 1
$f = 0
$c = 0
answer = ""
loop do
puts "Welcome\n"
puts "If you'd like to fly in first class, Press 1. For coach, Push 2."
answer = STDIN.gets
answer.chop!
break if answer =~ /1|2/
if answer == 1 then
$i += 1.each
$available.at(0..4)
end
if answer == 2 then
$i += 1.each
$available.at(5..19)
else
puts "Invalid number, enter 1 or 2."
Console_Screen.pause
end
end
puts "Here is your boarding pass. You are in seat " + $i.to_s
答案 0 :(得分:1)
对于头等舱,您可以这样做:
next_first = (0..4).find { |i| $available[i] != 1 }
如果它给你一个next_available
nil
,则第一堂课已满,否则你有下一个可用头等舱座位的索引。
同样对于教练:
next_coach = (5..19).find { |i| $available[i] != 1 }
然后,如果您有索引,请检查它是否为nil
,并将其存储在$i
中,只需$available[$i] = 1
以保留座位。
还有一个额外的免费提示,这个:
answer = STDIN.gets
answer.chop!
在answer
中留下一个字符串,因此answer == 1
始终为false。
参考文献:
答案 1 :(得分:0)
问题似乎在这里:
break if answer =~ /1|2/
这意味着“如果我们得到1或2”那么“完全停止并离开循环”
即这意味着如果该人实际输入有效的东西(即1或2),则不会执行任何进行座位分配的代码。
之后出现上面的@mu_is_too_short指出的错误。