问题是我不能在没有do while
部分的情况下编写while
循环...我可以以某种方式跳过它或者......?
// 9. Keep adding numbers untill you add number 7 twice in a row .
int a;
int b;
do
{
Console.WriteLine("add number:");
a = int.Parse(Console.ReadLine());
Console.WriteLine("add number:");
b = int.Parse(Console.ReadLine());
if (a == 7 && b == 7)
{
break;
Console.WriteLine("end");
}
}
答案 0 :(得分:8)
这样做的最好方法就是让你的状态
true
当它发现两个值都是7
时,这将使循环自动终止根据@ AlexK的回答,你也可以让while没有条件,只包含while(true)
{
Console.WriteLine("add number:");
a = int.Parse(Console.ReadLine());
Console.WriteLine("add number:");
b = int.Parse(Console.ReadLine());
if (a == 7 && b == 7)
{
break;
Console.WriteLine("end");
}
}
7
这将与上面的代码相同,但不是在每个循环开始时检查值是否为while(/*condition*/)
{
//code here
}
,而是无限循环,直到在循环内手动退出
您可能还注意到我使用的语法是
do
{
//code here
}
while(/*condition*/);
这是您正在使用的语法的较短版本,但它的行为略有不同。虽然如果在输入循环时没有满足条件,上面的代码示例将永远不会运行任何代码,但以下代码
do
无论条件是否满足,都将始终运行<input type="text" placeholder="name" name="name">
内包含的代码至少一次
答案 1 :(得分:0)
你有两个可能性。要么将你的条件直接设置到while
- 部分,因为Alfie已经说过或使用无限循环。如果您的循环有多个退出路径,这尤其有用,例如:
while(true)
{
if(a == 3) break;
if(b == 7) break;
// some more code
}
当然这段代码非常人为,很容易被if(a == 3 || b == 7) break
取代,但有时候你不能(或者不想)将所有条件合并为一个。此外,如果您希望在某些条件下中断迭代,而在另一个条件上中断continue
(例如,为了减少代码的嵌套),这可能很有用。