首页 > 解决方案 > 有没有办法将 Break 应用于此 For 循环?

问题描述

我一直在尝试解决此代码。此代码的目的是将在数组Memo中找到的第一个空格(Id 为 0)添加到数组中。

但是,不知何故,break并没有终止for循环(这导致不断添加值......)。

预期结果必须是 555550000000000,

但它改为返回 000005555555555 。

我忽略了什么吗?或者也许我必须使用其他类型的循环?

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

标签: c#

解决方案


的内容Memo还可以。问题是如何在foreach循环中打印它。下面的结构会更正确:

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

当您使用时,Console.Write(Memo[i]);您正在传递要用作索引的元素的值。基本上前 5 次打印索引为 5 的元素,其余时间打印索引为 0 的元素。


推荐阅读