Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将元素添加到最近自由位置的数组中_C#_Arrays_Methods - Fatal编程技术网

C# 将元素添加到最近自由位置的数组中

C# 将元素添加到最近自由位置的数组中,c#,arrays,methods,C#,Arrays,Methods,任务是:AddRectangle方法,该方法将矩形类型的矩形添加到最近的可用位置上的数组中,如果数组中没有可用空间,则返回true或false public class ArrayRectangles { private Rectangle[] rectangle_array; public ArrayRectangles(int n) { Rectangle[] rectangle = new Rectangle[n]; } publ

任务是:AddRectangle方法,该方法将矩形类型的矩形添加到最近的可用位置上的数组中,如果数组中没有可用空间,则返回true或false

 public class ArrayRectangles
{
    private Rectangle[] rectangle_array;
    public ArrayRectangles(int n)
    {
        Rectangle[] rectangle = new Rectangle[n];

    }
    public ArrayRectangles(Rectangle[] rectangle)
    {
        rectangle_array = rectangle;
    }
    public bool AddRectangle(Rectangle rectangle)
    {
        bool empty = true;
        //var openArray = 0;
        //for (int i = 0; i < rectangle_array.Length; i++)
        //{
        //    if (rectangle_array[i] == null)
        //    {
        //        rectangle_array[i] = rectangle;
        //        empty = true;

        //    }
        //}
        return empty;
    }
公共类ArrayRectangles
{
私有矩形[]矩形数组;
公共阵列矩形(int n)
{
矩形[]矩形=新矩形[n];
}
公共阵列矩形(矩形[]矩形)
{
矩形_数组=矩形;
}
公共布尔添加矩形(矩形)
{
bool empty=true;
//var-openArray=0;
//对于(int i=0;i
我不知道如何处理这种方法
请帮帮我!!!

好吧,你的代码几乎可以正常工作了。 当您找到空位时,只需返回
true
,如果迭代结束而没有返回,则返回
false

public bool AddRectangle(Rectangle rectangle)
{
    for (int i = 0; i < rectangle_array.Length; i++)
    {
        if (rectangle_array[i] == null)
        {
            rectangle_array[i] = rectangle;
            return true;
        }
    }
    return false;
}
public bool AddRectangle(矩形)
{
对于(int i=0;i
现在,AddRectangle函数将始终返回true,因为empty的值从不为false。此外,给定的矩形将存储在数组中的所有空格中,我确信这不是所需的场景

因此,您需要将空变量初始化为false,考虑到最初不存在空空间。然后,一旦找到空空间,就将矩形存储在那里,将空设置为true,并中断循环

公共类ArrayRectangles
{
私有矩形[]矩形数组;
公共阵列矩形(int n)
{
矩形[]矩形=新矩形[n];
}
公共阵列矩形(矩形[]矩形)
{
矩形_数组=矩形;
}
公共布尔添加矩形(矩形)
{
bool empty=false;
var-openArray=0;
对于(int i=0;i
您可以使用Array.FindIndex()代替for循环

public bool AddRectangle(Rectangle rectangle)
    {
        var firstEmptyIndex = Array.FindIndex(rectangle_array, i => i == null);

        if(firstEmptyIndex == -1)
            return false;

        rectangle_array[firstEmptyIndex] = rectangle;

        return true;
    }

除了以
bool empty=false开头之外;
代码的行为如何与您期望的不一致?您的意思是什么?这里的问题是什么?在注释的代码中,您需要在if中添加一个中断,以便在找到空槽时退出for循环。布尔空应该以false开头。什么意思是“在最近的空闲位置”?该数组是否以某种方式排序?还有另一个错误(我将以拼写错误集合结束此问题)。在ArrayRectangles类的构造函数中,您需要初始化内部矩形数组(不是一个未使用的名为rectangle的局部变量),您不需要空标志。而不是
empty=true;break;
just
return true;
然后在函数
return false
的末尾,而不是
return empty
是的。它也可以做。谢谢,它可以。)