java - 编写表示间隔和间隔列表的 Java 类

标签 java algorithm class intervals

对于下面的问题,这是不是一个比较好的解决方案:

Considering that CInterval can implement any interval: (a,b), and CIntervalList implements a reunion of distinct intervals, it is required to write an IntervalList method that intersects two intervals.

如果有更好的方法来设计这两个类,能否请您提出建议? 如果需要工会怎么办?区间的并集并不总是区间,那么如何改变方法的返回类型呢? 如果您对设计类有更好的建议,那么至少提供方法签名(如果不是整个主体)会有所帮助。提前谢谢了。 附言。为什么你认为 CIntervalList 是必需的?我本可以在 CInterval 本身内部有一个名为 intersect 的方法,方法如下: CInterval intersection(CInterval x) 可以这样调用 Interval3 = Interval1.intersection(Interval2)

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) 应该是static 这就是为什么它像 Files< 一样在 CIntervalList在 Java 或 集合 中,路径 ...
  • ab 没那么有意义!而是使用 bornSup 和 bornInf 或者 left 和 right 或者 endstart
  • CInterval 创建一个带有参数的构造函数 ... public CInterval(int a,int b, boolean vd)
  • 您是否考虑过使用 Math.minMath.max
  • 当您像这样访问实例变量 vdz.vd = ... 您没有考虑封装 oo 主体。尝试为您的 CInterval 类设置 Getters 和 Setters。
  • 如果其中一个区间为 Void,在本例中将 z 区间设置为 Void,因此 if(x.vd == true || y.vd = true)
  • 不需要写这个 } else if(x.a > y.a) 只需 }else 就足够了。

PS :但我认为您的问题更适合 https://codereview.stackexchange.com/

关于java - 编写表示间隔和间隔列表的 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30695224/

相关文章:

java - 错误 POLICY_NAME_POPULATION

java - 使用 spring 获取位于 Web 应用程序的 src 文件夹中的文件路径。

java - Reverse Integer leetcode -- 如何处理溢出

c++ - 如何对 1 到 50000 之间的 10000 个数字进行排序

java - JList 类型的方法未定义 - 在哪里放置方法?

java - Android 中的 OpenCV 模板匹配示例

java - 如何将控制台日志重定向到 Mac OS X 中的 Java Web Start 文件?

c++ - 仅使用小于运算符查找两个变量是否相等

C++:搜索 std::set 指向类的指针

java - 关于类中类的 OOP 相关问题