我遇到了与我必须以四种不同方式执行相同的任务(四个循环,基本上)的麻烦,它会生成随机数并将它们分类为偶数和奇数。我有具体的指示,这必须使用做,直到循环做,到目前为止,我只设法做四个之一。 第一个问题是,这里的循环不会运行,因为nch = ch已经存在,它首先检查条件。有没有办法解决这个问题?退出条件不超过290次迭代或nch = ch。找不到do-while和do-until循环
Cells.Clear
Randomize
ch = 0
nch = 0
Worksheets("sheet2").Cells(1, 1) = "Do..Until Loop"
Worksheets("sheet2").Cells(1, 2) = "Even"
Worksheets("sheet2").Cells(1, 3) = "Odd"
Do Until (nch + ch) = 290 Or nch = ch
n = Fix((31 - 13 + 1) * Rnd) + 13
If n Mod 2 = 0 Then
ch = ch + 1
Worksheets("sheet2").Cells(1 + ch, 2) = n
Else
nch = nch + 1
Worksheets("sheet2").Cells(1 + nch, 3) = n
End If
Loop
第二个问题是使用do while循环,我必须实现相同的目标,但第一个条件由于某种原因一直被忽略。
Do
If n Mod 2 = 0 Then
ch = ch + 1
Worksheets("sheet2").Cells(1 + ch, 2) = n
Else
nch = nch + 1
Worksheets("sheet2").Cells(1 + nch, 3) = n
End If
Loop While (nch + ch) < 290 Or nch <> ch
任何帮助将不胜感激!谢谢!
当While循环为(nch + ch)<290且nch <> ch'(即只有在两个条件都为“真”时才继续)。但是我不知道你对第一个项目会有什么期望 - 正如你所说的那样,在开始的时候,和evens的赔率几乎相同,即每个赔率为零,所以如果你打算一旦拥有相同的数字,那么你根本不应该经历循环。 (这是你的代码在做什么 - 也许老师期待这种情况。) – YowE3K
是的,问题是我会以另一种方式做到这一点,但老师特别告诉我们,退出条件应该是直到用逻辑运算符写出来。我在质疑循环中实际做到这一点的可能性。循环同时工作!谢谢! – DenizKutlu
'ch'和'nch'比较的情况很奇怪,你的老师究竟做了什么?只要两个值相等,你是否需要停下来,并且测试不超过290个值?也许他希望你使用'Do ... Loop Until'结构。 –