C#中至少包含六个单词的字符串的while循环

我正在尝试编写一个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();

            }

        }

我到底做错了什么?


慕姐8265434
浏览 234回答 3
3回答

DIEA

string sentence = Console.ReadLine();&nbsp; &nbsp; &nbsp; &nbsp; while (true)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (String.IsNullOrEmpty(sentence))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("Please, do not leave the sentence field empty!");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("Enter your desired sentence again: ");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else if (sentence.Split(' ').Length < 6)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("\r\nThe sentece entered isn't valid. Must have a least six words!");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("Enter a sentence with a least 6 words: ");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sentence = Console.ReadLine();&nbsp; &nbsp; &nbsp; &nbsp; }

倚天杖

sentence.Length返回字符串中的字符数。你必须把句子分成单词。string[] words = sentence.Split();在空白字符处拆分。因此,您可以将循环编写为while (String.IsNullOrEmpty(sentence) || sentence.Split().Length < 6){&nbsp; &nbsp; ...}这Length是拆分产生的字符串数组的长度。请注意,如果句子是null,C# 的布尔表达式的短路求值将不会执行||.后面的子表达式。因此,您不会得到空引用异常。

慕运维8079593

// 首先尝试改变 while 条件,如波纹管 ....然后尝试波纹管代码..public static void Main(string[] args)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; int count = 0;&nbsp; &nbsp; &nbsp; &nbsp; inputSteream:&nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("Enter your&nbsp; sentence: ");&nbsp; &nbsp; &nbsp; &nbsp; string sentence = Console.ReadLine();&nbsp; &nbsp; &nbsp; &nbsp; while (!String.IsNullOrEmpty(sentence) && sentence.Length >= 6)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var item in sentence.Split(' '))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (item.Length >= 6)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine("The sentece is {0}", item);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; count++;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; if (count == 0)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; goto inputSteream;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; Console.ReadKey();&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP