【问题标题】:While loops. How to loop StringsWhile 循环。如何循环字符串
【发布时间】:2018-10-16 22:21:50
【问题描述】:

我正在做这个非常简单的测验,我想做的是运行代码并回答问题,并有一个以正确答案结束的无限循环。
这是我最接近完成它的一次,我需要一些帮助。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Media;
using System.Threading.Tasks;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("What Countries Capital City is Oslo, Choose From the Following: ");
            Thread.Sleep(5000);
            Console.WriteLine("1.Norway, 2.Sweden, 3.Germany");
            String Answer = Console.ReadLine();

            while (Answer != null)
            {
                if (Answer == "Norway")
                {
                    Console.WriteLine("That is Correct!");
                    Console.Read();
                }
                else if (Answer != "Norway")
                {
                    Console.WriteLine("That is Incorrect!");
                    Console.Read();
                }
            }
        }
    }
}

所以我使用了一个while循环,但如果答案为假,while循环不会循环,它只循环一次,但我需要它无限循环,直到答案正确。

【问题讨论】:

  • 你有三个问题你应该尝试解决,一个是你的循环的条件,你没有不断从用户那里得到新的答案,你暗示用户输入一个数字而不是国名
  • 对于控制台输入循环,我总是建议使用 do...while 循环。它至少会运行一次,但可以强制重复,直到给出正确的答案(或取消输入)。菜单。使用输入有效数字。我所做的所有这些事情都在做......而。
  • 另外,我不知道你为什么要睡 5 秒钟,然后再向用户展示他们的选项..
  • 您的用户如何知道输入城市名称?您的提示(“1.Norway”)暗示他们应该输入1<ENTER>,这将不匹配。

标签: c# loops console console-application


【解决方案1】:

最简单的解决方案是更改您的 while 谓词:

while (Answer != "Norway")

您还需要在循环内设置您的答案变量:

String Answer = String.Empty;

while (Answer != Norway)
{
    Answer = Console.ReadLine();
    if (Answer == "Norway")
    {
        Console.WriteLine("That is Correct!");
    }
    else 
    {
        Console.WriteLine("That is Incorrect!");
    }
}

我已经删除了 Console.Read() 语句,因为它们不是必需的。

您可能希望在每次用户输入错误时再次打印问题。

您还可以通过更改谓词使答案不区分大小写:

while (!Answer.Equals("Norway", StringComparison.CurrentCultureIgnoreCase))

【讨论】:

  • 太棒了 非常感谢 Igby。我不知道我可以像你一样操纵字符串答案谢谢
  • @Jerry0 不客气!请考虑投票并接受答案。
【解决方案2】:

我用调试器运行了你的代码。

您需要找出“Console.ReadLine()”和“Console.Read()”之间的不同之处。 --> 其实我从你的错误中吸取了教训。

请不要忘记,在while循环中,“字符串答案”应该由用户输入重新赋值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2015-05-21
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多