我试图找出为什么我的while循环没有在我希望的时候退出。基本上,我正在做一个简单的游戏,其中两个玩家玩单词,如果他们玩一个允许的单词,每轮都可以得分。一旦一个玩家打出一个以特定字符结尾的单词,该玩家就输掉了游戏。
我的方法是(在循环之前)设置一个值为false,然后使用while循环来保持游戏继续进行,直到玩家输入一个丢失的单词,此时循环应该立即退出,而不是进入玩家2(目前确实如此)。这基本上是我现在所拥有的(在这一点上,我只是想让基本逻辑继续下去):
player1_count = 0
player2_count = 0
continue = true
while continue
## get input
if player1_input[-1] == losing_char
continue = false
else
player1_count += 1
end
##do the same for player 2
## get input
if player2_input[-1] == losing_char
continue = false
else
player2_count += 1
end
end
我遇到的问题是,我预计当继续设置为false时,循环会立即终止,而相反,它会一直持续到循环中运行的电流结束,也会得到玩家2的输入(如果玩家1丢失),这是我不想要的。我猜要么我对Ruby中循环的工作原理有错误的想法,要么我在编写循环时搞砸了/错误地使用了它。
有没有办法在 while 循环中继续运行,直到我的 continue 变量设置为 false,并让它立即退出,如我所希望的那样?
在Ruby(以及所有C风格语言)中,while循环条件只在迭代开始时检查。这是设计好的,否则它必须在每个语句运行后检查条件。
在这种情况下,您应该调用< code>break,而不是使用continue变量,这将立即退出(最里面的)循环。所以对于你的代码
player1_count = 0
player2_count = 0
while true
## get input
if player1_input[-1] == losing_char
break
else
player1_count += 1
end
##do the same for player 2
## get input
if player2_input[-1] == losing_char
break
else
player2_count += 1
end
end
问题内容: 我正在通过oracle认证的准Java SE7程序员实践考试(这本书),遇到一个问题,即使有解释,我也不明白答案。这是说明和代码: 它将打印3。循环主体执行两次,程序将打印3。 我不了解循环主体如何执行两次,也许我不了解什么意思。有人可以解释一下吗? 问题答案: 是 分配 其中B的逆分配给自身(真假之间有效地翻转) 在Java中,分配返回所分配的内容(因此可能) 因此将翻转b的值,然后
问题内容: 我正在考虑,这是我想到的: 假设我们有这样的代码: 一个请求进入,并且JS引擎逐步开始执行上述代码。前两个呼叫是同步呼叫。但是当涉及到方法时,它将成为异步执行。但是JS立即从中返回并继续执行,这称为或。并且它继续在其他等等上工作。 执行结果如下: 交流数据库 因此,基本上第二个首先完成,其回调函数比第一个早执行,这是有道理的。 我们在这里谈论单线程应用程序。JS Engine会继续执行
问题内容: 到现在为止,我以前以:结束我的Tkiter程序,否则什么都不会出现!参见示例: 但是,当尝试该程序的下一步(使球随着时间移动)时,该书正在阅读,并说要执行以下操作。将绘图功能更改为: 并将以下代码添加到我的程序中: 但是我注意到,添加此代码块使之无用,因为即使没有它,所有内容也会显示出来!!! 此时,我应该提到我的书从未谈论过(也许是因为它使用了Python 3),但是由于我的程序无法
本文向大家介绍深入了解java8的foreach循环,包括了深入了解java8的foreach循环的使用技巧和注意事项,需要的朋友参考一下 虽然java8出来很久了,但是之前用的一直也不多,最近正好学习了java8,推荐一本书还是不错的<写给大忙人看的javase8>。因为学习了Java8,所以只要能用到的地方都会去用,尤其是Java8的Stream,感觉用起来觉得很方便,因为点点点就出来了,而且
我在玩jmh,在关于循环的部分,他们说 您可能会注意到重复次数越多,被测量操作的“感知”成本就越低。到目前为止,我们每次添加都使用1/20 ns,远远超出了硬件的实际能力。发生这种情况是因为循环被大量展开/流水线化,并且要测量的操作是从循环中提升的。士气:不要过度使用循环,依靠JMH来获得正确的测量。 我自己也试过了 并得到以下结果: 它确实显示了MyBenchmark。MeasureError\
我试图写一个代码为每个股票价值是75美元或更多添加一个"*"在STK_FLAG列。 ORA-06550:第15行,第21列:PLS-00201:标识符“STK\U FLG”必须声明ORA-06550:第15行,第5列:PL/SQL:SQL语句忽略ORA-06550:第23行,第7列:PL/SQL:ORA-00904:“STK\U FLG”:无效标识符ORA-06550:第17行,第5列:PL/SQ