C# Отображение массива строк с разными консольными цветами, в зависимости от нечетной / четной длины строки в массиве - PullRequest
0 голосов
/ 04 августа 2020

Моя программа компилируется и почти выдает правильный результат, но при этом проверяет, четная или нечетная строка. консоль зависает и застревает в строке, которая проверяет, является ли строка четной или нечетной.

Я не знаю, математическая ли это проблема или я не понимаю, как использовать циклы / массивы с каждым прочее.

В упражнении указано следующее:

Создайте строковый массив из 20 позиций. Попросите пользователя ввести несколько слов и сохранить эти слова в массиве. Прекратить чтение слов, когда массив полностью заполнен или когда пользователь вводит пустое слово (длина = 0). Наконец, отобразите все слова в той же последовательности, в которой они были введены, используйте желтый для слов с нечетной длиной и используйте красный для слов с четной длиной.

ожидаемый результат:

введите описание изображения здесь

string[] word = new string[20]; // create array
int count = 0;

// fill array with words
for (int i = 0; i < word.Length; i++)
{
    Console.ResetColor();
    Console.Write("Enter a word: ");
    word[i] = Console.ReadLine();
    if (word[i].Length == 0) // if length of word[i] is equal to 0 then the loop stops
    {
        i = word.Length;
    }
}
// Display words in an array
for (int i = 0; i < word.Length; i++)
{
    if (word[i].Length % 2 == 0)// checks if string length in word[] array is even or odd
    {
        Console.ForegroundColor = ConsoleColor.Red; // make console text Yellow for 'even' strings
    }
    else
    {
        Console.ForegroundColor = ConsoleColor.Yellow; // Make console text Red for 'odd' strings.
    }
    Console.Write("{0}\n", word[count]); // display the words in the array.
    Console.ResetColor(); // Reset the text color
    count++;
}
Console.WriteLine();
Console.WriteLine("End of program");
Console.ReadKey();

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

Проблема в том, что вы инициализируете свой строковый массив с 20. Но когда вы вводите менее 20 слов, непрерывные строки становятся null. И null % 2 не работает

Вы можете проверить, соответствует ли строка null. Или лучше использовать List вместо Array.

List<string> words = new List<string>(20);

Затем добавьте свои слова с words.Add(Console.ReadLine()); и l oop в список с

foreach (string word in words) {...}
1 голос
/ 04 августа 2020

Есть несколько вещей, которые вы можете изменить:

            string[] word = new string[20]; // create array
            int count = 0;

            // fill array with words
            for (int i = 0; i < word.Length; i++)
            {
                Console.ResetColor();
                Console.Write("Enter a word: ");
                word[i] = Console.ReadLine();
                if (word[i].Length == 0) // if length of word[i] is equal to 0 then the loop stops
                {
                    break; // exit loop
                }
                count ++; // increase count by 1;
            }
            // Display words in an array
            for (int i = 0; i < count; i++)
            {
                if (word[i].Length % 2 == 0)// checks if string length in word[] array is even or odd
                {
                    Console.ForegroundColor = ConsoleColor.Red; // make console text Yellow for 'even' strings
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Yellow; // Make console text Red for 'odd' strings.
                }
                Console.Write("{0}\n", word[i]); // display the words in the array.
                Console.ResetColor(); // Reset the text color
            }
            Console.WriteLine();
            Console.WriteLine("End of program");
            Console.ReadKey();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...