c#如何使用循环来重复数组中的一个阶段

本文关键字:一个 循环 何使用 数组 | 更新日期: 2023-09-27 18:11:46

我将一些问题存储在数组中供用户回答,但我不希望用户输入整数。当用户输入整数时,系统会提示"请输入一个单词",然后跳转到下一个问题。我想让它重复这个问题,直到用户输入一个单词,然后继续循环。

我最近才开始学习c#,如果有任何帮助,我将不胜感激。

            string [] Ques = new string [5];
            Ques[0] = "How do you say Good morning  in Portuguese";
            Ques[1] = "how do you say how are you;";
            Ques[2] = "how do you say I am fine thank you";
            Ques[3] = "How do you say is everything ok";
            Ques[4] = "how do you say yes";
            foreach (string Q in Ques)
            {
                Console.WriteLine(Q);
                string Answer = Console.ReadLine();
                int value;
                if (int.TryParse(Answer, out value))
                {
                    Console.WriteLine("please enter a word");
                } 

            }

c#如何使用循环来重复数组中的一个阶段

你需要的是一个while循环在for:

string[] Ques = new string[5];
Ques[0] = "How do you say Good morning  in Portuguese";
Ques[1] = "how do you say how are you;";
Ques[2] = "how do you say I am fine thank you";
Ques[3] = "How do you say is everything ok";
Ques[4] = "how do you say yes";
foreach (string Q in Ques)
{
    Console.WriteLine(Q);
    string Answer = Console.ReadLine();
    int value;
    while (int.TryParse(Answer, out value))
    {
        Console.WriteLine("please enter a word");
        Answer = Console.ReadLine();
    }
}

这样,当用户输入一个整数时,他会提示"请输入一个单词",直到他输入一个不能被解析为int的字符串,然后将提示下一个问题

如果你不想在迭代时移动到下一个元素,不要使用foreach,使用简单的for并控制您的进度:

for(int i = 0; i < Ques.Length; i++)
{
    Console.WriteLine(Q);
    string Answer = Console.ReadLine();
    int value;
    if (int.TryParse(Answer, out value))
    {
         Console.WriteLine("please enter a word");
         i--; // go back, and will go forward in for statement
    } 
}

显然,你的代码是不完整的,因为你没有对Answer做任何事情。当您将其更改为有意义时,您可能会发现其他解决方案更合适。

我希望它重复这个问题,直到用户输入一个单词,然后继续

听起来你需要另一个循环:

foreach (string Q in Ques)
{
    bool numberEntered = false;
    do
    {
        Console.WriteLine(Q);
        string Answer = Console.ReadLine();
        int value;
        numberEntered = int.TryParse(Answer, out value);
        if (numberEntered)
        {
            Console.WriteLine("please enter a word");
        }
    }
    while (numberEntered);
}

试试这个(它重复问题)

 string[] Ques = new string[5];
        Ques[0] = "How do you say Good morning  in Portuguese";
        Ques[1] = "how do you say how are you;";
        Ques[2] = "how do you say I am fine thank you";
        Ques[3] = "How do you say is everything ok";
        Ques[4] = "how do you say yes";
        foreach (string Q in Ques)
        {
            Console.WriteLine(Q);
            string Answer = Console.ReadLine();
            int value;
            if (!int.TryParse(Answer, out value))
            {
                while (!int.TryParse(Answer, out value))
                {
                    Console.WriteLine("please enter a word");
                    Console.WriteLine(Q);
                    Answer = Console.ReadLine();
                }
            }
        }