【发布时间】:2020-02-16 16:43:02
【问题描述】:
我正在为我的学习创建一个简单的程序。在这个程序中,我需要造一个 10 个单词的句子。在最后一次输入之后,我想让它停止。所以我尝试的是这样的: 创建一个名为 textt 的空字符串,使用一个 while 循环,因为我让它始终为真,它将继续,创建一个字符串,其分配显示在程序中给用户 aSentence 它被调用,取一个名为 count 的 int 并给它值0,然后我开始我的 for 循环我使用 for 循环因为我可以添加一个条件和迭代器,所以它会停止,当然还有初始化程序。
在for循环中我:打印出aSentence(用户会读到这个),我放了一个叫input的字符串,让用户输入一个单词(我是初学者,不知道怎么做如果用户输入两个单词但现在不是分配错误),我输入字符串 textt 因为它们是不可变的但不在此处,我添加“”以创建空白空间,当然还有输入。然后我打印出用户写下的文本,并用 i++ 递增(如果我说得对的话)。
然后我开始一个 if 语句,它说如果我(见我的 for 循环)等于 == 到 9,因为我在我的 for 循环中增加它应该打印出句子的结尾,显示整个文本然后中断.
但是由于某种原因,每次输入内容时循环都是无限的。当循环应该在 9 点结束时,句子的结尾会不时出现。 我的问题是如何解决这个问题,以确保当用户输入 10 个单词时句子结束,并且句子的结尾恰好在 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循环? -
另外,您不需要为字符串赋值调用字符串构造函数(这甚至可以编译吗?)。直接赋值字符串即可:
string aSentance = "We are making a sentence of 10 words."; -
还有一个问题是您将
i递增两次:一次在for语句迭代器中,另一次在for循环体中,所以i将变为@ 987654332@ 仅 5 次迭代。删除内部增量。 -
并且你的 for 循环条件应该是
< 10,因为你想要10项目并且计数从0开始。而且您不需要在for循环中使用break语句,因为条件是在for语句中内置的。 -
如果你学习how to debug programs,你的学习会更好。
标签: c# string for-loop if-statement increment