[英]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;
}
}
}
}
}
}
将我的评论合并为一个答案:
while(true)
将永远运行(除非某些代码调用break
)。 您的内部for
循环应该可以正常工作 - 为什么不删除while
循环?
您的 for 循环条件应该是< 10
,因为您需要10
项目并且计数从0
开始。 而且您不需要在for
循环中使用break
语句,因为条件是内置在for
语句中的。
还有一个问题是您将i
增加了两次:一次在 for 语句迭代器中,一次在 for 循环体中,因此i
仅在5
次迭代中就变为9
。 删除内部增量。 请参阅此处的for
语句文档。
此外,您不需要为字符串赋值调用字符串构造函数(甚至编译?)。 直接给字符串赋值: string aSentance = "We are making a sentence of 10 words.";
最后,您可以查看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.