Цикл while строки, содержащей не менее шести слов в C # - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь закодировать проверку цикла while для проверки ответа пользователя, когда он вводит предложение по следующим критериям:

  • Строка нулевая или пустая
  • Приговор должен содержать не менее шести слов.

Я смог получить нулевое или пустое условие для работы, как ожидалось, но «должно быть не менее шести слов» не работает, как предполагалось в данный момент. Всякий раз, когда я набираю предложение, содержащее менее шести слов, он принимает это нормально. Однако, если я ввожу предложение с шестью словами или более, оно выдает установленное сообщение об ошибке, когда не должно.

        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();
            }
        }

Что именно я делаю не так?

Ответы [ 6 ]

0 голосов
/ 15 июля 2019

Попробуйте, как показано ниже пример кода

 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 is{1}", sentence.Length,sentence);
            }
0 голосов
/ 10 марта 2019

// Сначала попробуйте изменить условие, как показано ниже, а затем попробуйте код ниже ..

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();
    }
0 голосов
/ 10 марта 2019

Во-первых, вы можете изменить свое состояние, как показано ниже это даст вам предложение, длина которого меньше шести while (предложение. Длина <6) Если вы хотите получить слово длиной шесть слов, попробуйте следующее условие ... </p>

sentence.Split(' ').Length >= 6
0 голосов
/ 09 сентября 2018

sentence.Length возвращает количество символов в строке. Вы должны разбить предложение на слова.

string[] words = sentence.Split();

разделяется на пробелы.

Следовательно, вы можете написать свой цикл как

while (String.IsNullOrEmpty(sentence) || sentence.Split().Length < 6)
{
    ...
}

Здесь Length - длина массива строк, полученного в результате разбиения.

Обратите внимание, что в случае предложения null * * * * * * * * * * * * * * Булевские выражения C # 1015 * не будут выполнять подвыражение, следующее за ||. Поэтому вы не получите исключение нулевой ссылки.

0 голосов
/ 09 сентября 2018
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();
        }
0 голосов
/ 09 сентября 2018

Изменить while (String.IsNullOrEmpty(sentence) || sentence.Length != 6) на

while (String.IsNullOrEmpty(sentence) || sentence.Split(' ').Length < 6)
...