我有这个程序,我从命令行运行,在这个方法后冻结。这个方法有效,但最后冻结,我留下一个不断闪烁的光标。
def self.chooseteams(numberofteams)
i=1
while i<numberofteams
puts "choose a team"
team=gets.chomp
@@c<<team
i+=1
end
end
程序然后冻结并且无法调用下一个方法。它意味着执行它的功能,当条件满足时,传递给下一个方法。我猜是它被捕获在无限循环中,但是,我无法看到它!
def self.secondfixer(numberofteams)
until @@listofDrawnTeams.length==numberofteams do
firstPick = @@c.sample
@@listofDrawnTeams<<firstPick
@@listofDrawnTeams.uniq!
end
end
这些方法都在程序结束时调用
Genfix.gener(64)
Genfix.fixer(64)
Genfix.chooseteams(32)
Genfix.secondfixer(32)
Genfix.fixer(32)
答案 0 :(得分:0)
在您的方法secondfixer
中,如果您有重复的团队,您的until
循环可能永远不会完成。
使用@@变量非常奇怪 - 它很少用于ruby编程。