对于以下问题,这是不是一个比较好的解决方案:
考虑到cinterval可以实现任何间隔:(a,b),和
CintervalList实现不同间隔的重聚,这是必需的
编写与两个间隔相交的intervallist方法。
如果有更好的方法来设计这两个类,你能提供一些建议吗?
如果需要工会怎么办间隔的并集并不总是一个间隔,所以如何更改方法的返回类型?
如果您对设计类有更好的建议,那么至少可以给出方法签名(如果不是整个主体的话)。多谢提前。
附:你认为为什么需要辛特瓦利斯特我本来可以有一个名为intersect inside CInterval本身的方法,其方法如下:CInterval intersection(CInterval x)
可以这样称呼
class CInterval
{
int a;
int b;
boolean vd = false; //(void intervals are marked with vd = true)
}
class CIntervalList
{
CInterval intersection(CInterval x, CInterval y)
{
CInterval z = new CInterval();
if(x.vd == false || y.vd = false)
{
z.vd= true;
return z;
}
else if(x.a < y.a)
{
if(x.b < y.a)
{
z.vd= true;
return z;
} else
{
if(x.b < y.b)
{
z.a = y.a;
z.b = x.b;
return z;
}
else
{
z.a = y.a;
z.b = y.b;
return z;
}
}
} else if(x.a > y.a)
{
if(y.b < x.a)
{
z.vd= true;
return z;
} else
{
if(y.b < x.b)
{
z.a = x.a;
z.b = y.b;
return z;
}
else
{
z.a = x.a;
z.b = x.b;
return z;
}
}
}
}
}
最佳答案
一堆话CInterval intersection(CInterval x, CInterval y)
应该是静态的,这就是为什么它在Java中类似于CIntervalList
或Files
,Collections
。。。
a和b不是那么有意义而是使用bornSup和bornInf或left和right或end和start。
使用Paths
的参数创建构造函数。CInterval
你有没有想过使用public CInterval(int a,int b, boolean vd)
和Math.min
?
当您像这样访问实例变量Math.max
时,您没有考虑封装oo主体尝试为类设置getter和setter。
如果其中一个间隔是空的,在这种情况下,将z间隔设置为空的,因此vd
不需要写这个就足够了。
注:但我认为你的问题更适合https://codereview.stackexchange.com/