繁体   English   中英

将输入添加到最多 10 个单词的字符串 C#

[英]Adding input to a string with a max of 10 words C#

我正在为我的学习创建一个简单的程序。 在这个程序中,我需要造一个 10 个单词的句子。 在最后一次输入之后,我想让它停止。 所以我尝试的是这样的:创建一个名为 textt 的空字符串,使用一个 while 循环,因为我使它始终为真,它将继续,创建一个字符串,该字符串显示在程序中给用户 aSentence 其调用的赋值,取一个 int命名计数并赋予它 0 的值,然后我开始我的 for 循环我使用 for 循环因为我可以添加一个条件和迭代器,所以它停止,当然还有初始化程序。

在for循环中我:打印出aSentence(用户会读到这个),我放了一个名为input的字符串,让用户输入一个词(我是初学者我不知道如果出现错误怎么办)用户放了两个词,但现在不是分配),我放了字符串 textt,因为它们是不可变的,但不在此处,我添加了“”以创建空白空间,当然还有输入。 然后我打印出用户写下的文本,并用 i++ 增加(如果我说得对的话)。

然后我开始一个 if 语句,它说如果我(参见我的 for 循环)等于 == 9 因为我在我的 for 循环中增加它应该打印出句子的结尾,显示整个文本然后中断。

但是由于某种原因,每次输入内容时循环都是无限的。 当循环应该在 9 点结束时,句子的结尾会时不时地显示出来。句子恰好在 10 个输入词处弹出。

using System;

namespace Opgave_10_woorden_invoegen_in_1_string_plakken
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create a program that stops after input of 10 words
            string textt = "";
            while (true)
            {
                string aSentence = new string("We are making a sentence of 10 words.");
                int count = 0;
                for (int i = 0; i < 9; i++)
                {
                    Console.WriteLine(aSentence);
                    string input = Console.ReadLine();
                    textt = textt + " " + input;
                    Console.WriteLine(textt, i++);
                    if (i == 9)
                    {
                        Console.WriteLine("End of the sentence", textt);
                        break;
                    }
                }
            }
        }
    }
}

将我的评论合并为一个答案:

  1. while(true)将永远运行(除非某些代码调用break )。 您的内部for循环应该可以正常工作 - 为什么不删除while循环?

  2. 您的 for 循环条件应该是< 10 ,因为您需要10项目并且计数从0开始。 而且您不需要在for循环中使用break语句,因为条件是内置在for语句中的。

  3. 还有一个问题是您将i增加了两次:一次在 for 语句迭代器中,一次在 for 循环体中,因此i仅在5次迭代中就变为9 删除内部增量。 请参阅此处for语句文档。

  4. 此外,您不需要为字符串赋值调用字符串构造函数(甚至编译?)。 直接给字符串赋值: string aSentance = "We are making a sentence of 10 words.";

  5. 最后,您可以查看Console.WriteLine的文档。 您传递给它的第二个变量可能不是您认为的那样。

将这一切放入一个示例中:

static void Main()
{
    //Create a program that stops after input of 10 words
    string textt = "";
    string aSentence = "We are making a sentence of 10 words.";

    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(aSentence);
        textt = textt + " " + Console.ReadLine();
        Console.WriteLine(textt);
    }

    Console.WriteLine("End of the sentence");
    Console.ReadKey();
}

while (true)语句意味着你的循环永远运行。

您正试图通过使用break来摆脱这种情况。 但是,由于这是在内部for循环内执行的,因此它只会跳出该内部循环,而不是您的外部while循环,这正是您打算和期望的。

您不需要外部 while 循环,因此只需将其删除即可解决问题。

如果您想要 10 个输入,那么您还需要将for循环更改for运行 10 次迭代,而不是像您目前拥有的 9 次。

此外,在多次将字符串连接在一起时,您应该使用 StringBuilder 类,因为它更有效。 有关更多详细信息,请参阅: https : //www.dotnetperls.com/stringbuilder

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM