我是一个C#的初学者,我想知道是否有更好的方法通过使用循环来写这个3+3数学问题,比如do while循环?
我的代码如下。
static void Main (string[] args) {
Console.WriteLine ("What is 3+3?");
int answer = int.Parse (Console.ReadLine ());
int counter = 1;
if (answer == 6) {
Console.WriteLine ("Great! thats Correct! you've got it in the first try");
} else {
while (answer != 6) {
Console.WriteLine (" Wrong, please try again");
answer = int.Parse (Console.ReadLine ());
counter++;
if (answer == 6) {
Console.WriteLine ("Correct! Well done! you got it in {0} tries", counter);
}
}
}
Console.ReadLine ();
}
这个程序的目的是向用户提出一个问题,检查答案,然后输出一条语句,说明用户用了多少次才得到正确的答案。
如果你能给我一些建议。
如果你只是想要更少的代码,一个更简洁的选择,你可以选择以下任何一种。请注意,我忽略了在第一种情况和其他情况下使用稍微不同的错误信息。如果这一点很重要,那么你当然可以用一个 if (counter == 1)
语句。
第一个例子使用DoWhile,它总是至少执行一次循环,然后检查退出条件(answer == 6
)在每个循环的最后。
static void Main(string[] args)
{
Console.WriteLine("What is 3+3?");
int answer;
int counter = 0;
do
{
answer = int.Parse(Console.ReadLine());
counter++;
if (answer == 6)
{
Console.WriteLine("Correct! Well done! you got it in {0} tries", counter);
}
else
{
Console.WriteLine(" Wrong, please try again");
}
}
while (answer != 6);
Console.ReadLine();
}
第二个例子使用了一个永远循环的while循环和break关键字,一旦满足某个条件,就会脱离循环。这样就不需要额外的if语句来摆脱讨厌的额外消息等。
static void Main(string[] args)
{
Console.WriteLine("What is 3+3?");
int answer;
int counter = 0;
while (true)
{
answer = int.Parse(Console.ReadLine());
counter++;
if (answer == 6)
{
Console.WriteLine("Correct! Well done! you got it in {0} tries", counter);
break;
}
Console.WriteLine(" Wrong, please try again");
}
Console.ReadLine();
}
我对这个不是很了解,但至少,在C++中,当你失败时,我用Main();再次调用主方法,添加错误信息。
希望这能解决你的问题。
使用dowhile会大大缩短时间。
static void Main(string[] args)
{
int counter = 1;
boolean hasAnswer = false;
do {
Console.WriteLine("What is 3+3?");
int answer = int.Parse(Console.ReadLine());
if (answer == 6)
{
Console.WriteLine("Great! thats Correct! You've got it in " + counter + " attempt(s)");
hasAnswer = true
}
else
{
Console.WriteLine(" Wrong, please try again");
counter++;
}
} while(!hasAnswer);
}
我很久没有重写C#了,所以语法可能会有偏差,但这就是操作的要点。