C#中至少包含六个单词的字符串的while循环
Posted
技术标签:
【中文标题】C#中至少包含六个单词的字符串的while循环【英文标题】:While loop of a string containing at least six words in C# 【发布时间】:2018-09-09 13:48:01 【问题描述】:我正在尝试编写一个 while 循环验证来验证用户在输入具有以下条件的句子时的响应:
字符串为空或为空 句子必须至少为六个字。我能够让 null 或 empty 条件按预期工作,但“必须至少六个字”目前无法按预期工作。每当我输入一个少于六个单词的句子时,它都会接受它。但是,如果我输入了一个包含六个或更多单词的句子,它会在不应该时提示已建立的错误消息。
while (String.IsNullOrEmpty(sentence) || sentence.Length != 6)
if (String.IsNullOrEmpty(sentence))
Console.WriteLine("Please, do not leave the sentence field empty!");
Console.WriteLine("Enter your desired sentence again: ");
sentence = ReadLine();
else
Console.WriteLine("\r\nThe sentece entered isn't valid. Must have a least six words!");
Console.WriteLine("Enter a sentence with a least 6 words: ");
sentence = ReadLine();
我到底做错了什么?
【问题讨论】:
【参考方案1】:string sentence = Console.ReadLine();
while (true)
if (String.IsNullOrEmpty(sentence))
Console.WriteLine("Please, do not leave the sentence field empty!");
Console.WriteLine("Enter your desired sentence again: ");
else if (sentence.Split(' ').Length < 6)
Console.WriteLine("\r\nThe sentece entered isn't valid. Must have a least six words!");
Console.WriteLine("Enter a sentence with a least 6 words: ");
else break;
sentence = Console.ReadLine();
【讨论】:
应该是 【参考方案2】:将while (String.IsNullOrEmpty(sentence) || sentence.Length != 6)
更改为
while (String.IsNullOrEmpty(sentence) || sentence.Split(' ').Length < 6)
【讨论】:
我添加了您建议的行。但是,当我输入一个六字及以上的字时,它仍然提示消息错误。 @NTaverassentence
你输入了什么?
您正在寻找不是字符串中字符的单词,请参阅我的回答。
他需要对分割后的字符串重复测试,而不是仅仅落在else块中
@Steve,测试在此期间重复。字符串为 null 或 Empty,用户会收到提示。当他写一个少于 6 个单词的句子时,他会得到提示,否则它会在一段时间内中断【参考方案3】:
sentence.Length
返回字符串中的字符数。你必须把句子分成单词。
string[] words = sentence.Split();
在空白字符处拆分。
因此,您可以将循环编写为
while (String.IsNullOrEmpty(sentence) || sentence.Split().Length < 6)
...
这里Length
是拆分后的字符串数组的长度。
注意如果句子是null
,C#布尔表达式的short-circuit evaluation不会执行||
后面的子表达式。因此,您不会得到空引用异常。
【讨论】:
【参考方案4】:首先,您可以在以下情况下更改您... 它会给你一个少于六个长度的句子 while (sentence.Length
sentence.Split(' ').Length >= 6
【讨论】:
【参考方案5】:// 首先尝试改变条件,如波纹管..然后尝试波纹管代码..
public static void Main(string[] args)
int count = 0;
inputSteream:
Console.WriteLine("Enter your sentence: ");
string sentence = Console.ReadLine();
while (!String.IsNullOrEmpty(sentence) && sentence.Length >= 6)
foreach (var item in sentence.Split(' '))
if (item.Length >= 6)
Console.WriteLine("The sentece is 0", item);
count++;
break;
break;
if (count == 0)
goto inputSteream;
Console.ReadKey();
【讨论】:
当你认为你有更好的答案时,这并不是要否决其他人的答案。 对不起,亲爱的奥尔德特。我不小心发生了【参考方案6】:试试下面的示例代码
string sentence=Console.ReadLine();
if (String.IsNullOrEmpty(sentence))
Console.WriteLine("Please, do not leave the sentence field empty!");
Console.WriteLine("Enter your desired sentence again: ");
sentence = Console.ReadLine();
else if(sentence.Length!=6)
Console.WriteLine("\r\nThe sentece entered isn't valid. Must have a least six words!");
Console.WriteLine("Enter a sentence with a least 6 words: ");
sentence = Console.ReadLine();
else
Console.WriteLine("Your entered string length is'0' and word is1", sentence.Length,sentence);
【讨论】:
以上是关于C#中至少包含六个单词的字符串的while循环的主要内容,如果未能解决你的问题,请参考以下文章