C# 将元素添加到最近自由位置的数组中
任务是:AddRectangle方法,该方法将矩形类型的矩形添加到最近的可用位置上的数组中,如果数组中没有可用空间,则返回true或falseC# 将元素添加到最近自由位置的数组中,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
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;
justreturn true;
然后在函数return false
的末尾,而不是return empty
是的。它也可以做。谢谢,它可以。)