Есть ли способ применить Break к этому For l oop? - PullRequest
0 голосов
/ 27 мая 2020

Я пытался решить этот код. Цель этого кода - добавить к массиву Memo первые пустые пробелы (с идентификатором 0), найденные в массиве.

Но каким-то образом break не завершает for l oop (что приводит к продолжению добавления значений ...).

Ожидаемый результат должен быть 555550000000000,

Но вместо этого он возвращает 000005555555555.

Am I игнорируя что-то? или, может быть, мне нужно использовать другой тип цикла?

using System;

public class Program
{
    public static void Main()
    {
        int [] Memo = new int[15];
        foreach(int i in Memo)
        {
            Memo[i] = 0;
        }

        int Empty = 0;
        int size = 5;
        int Value = 5;
        int CheckPos;

        for(int x = 0; x < Memo.Length; x++)
        {
            if (Memo[x] == 0)
            {
                Empty++;
            }
            else
            {
                Empty = 0;
            }

            if (Empty == size)
            {
                CheckPos = x - size + 1;
                for (int j = CheckPos; j < size; j++)
                {
                    Memo[j] = Value;
                }
                break;
             }
        }

        foreach(int i in Memo)
        {
            Console.Write(Memo[i]);
        }
    }
}

1 Ответ

1 голос
/ 27 мая 2020

С содержанием Memo все в порядке. Проблема в том, как вы его распечатаете в своем foreach l oop. Следующая структура будет более правильной:

foreach (int i in Memo)
{
    Console.Write(i);
}

Когда вы используете Console.Write(Memo[i]);, вы передаете значение элемента, который будет использоваться в качестве индекса. Обычно первые 5 раз вы печатаете элемент с индексом 5, а в оставшееся время вы печатаете элемент с индексом 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...