我已经设置了创建c#控制台文本分析程序的任务。该程序允许用户逐字逐句输入一个句子,一个完整的句子是句子的结尾,一个双重句号是打破循环并给出文本的分析
我有正确计算单词和句子的程序。
我的问题是:如何更改我的代码,以便程序不会将完全停止计算为角色?
以下是我的代码
case "1":
string UserSentence="";
string newString="";
string UserWord;
int SentenceCount=1;
int WordCount=0;
double CharCount=0;
Console.WriteLine("You have chosen to type in your sentance(s) for analysis.\nPlease input each word then press enter.\n\nUse one full stop to end the sentence.\nUse two full stops to finish inputting sentences");
while (true)
{
UserWord = Console.ReadLine();
WordCount++;
UserSentence = UserSentence+UserWord;
if (UserWord == "..")
{
CharCount=CharCount-2;
WordCount--;
break;
}
if (UserWord == ".")
{
CharCount=CharCount-1;
WordCount--;
SentenceCount++;
}
}
foreach (char c in UserSentence)
{
if (c ==' ')
continue;
newString += c;
}
CharCount = newString.Length;
Console.WriteLine("Their are {0} characters",CharCount);
Console.WriteLine("Their are {0} Sentences",SentenceCount);
Console.WriteLine("Their are {0} Words",WordCount);
break;
我试图通过减去2或1来改正字符数,具体取决于完全停止的数量,但它不起作用
感谢您提前提供任何帮助。
答案 0 :(得分:1)
在这里你只需覆盖 CharCount
的值,丢弃你之前做过的所有减法:
CharCount = newString.Length;
可以改为:
CharCount = CharCount + newString.Length;
为了给出正确的结果。
还有其他选项,例如计算句子中.
的数量,在获得长度之前用空字符串替换句子中的所有.
等等。
关于样式的注意事项:在C#中,局部变量通常是camelCase,而不是PascalCase。
答案 1 :(得分:0)
您可以使用LINQ来计算非空格或点的字符。
int characterCount = s.Count(x => x != ' ' && x != '.');
答案 2 :(得分:0)
你可以计算不是“。”的字符。
CharCount = newString.Where(c => !c.Equals('.') && !c.Equals(' ')).Count();