实现涉及包含和间隔

时间:2016-02-19 02:06:14

标签: java

该方法不能包含ifloop。如果一个数字包含在一个区间中,它将返回true。它适用于[1,6] ......但是我如何解决这个问题呢?它可以用于开放(1,6)或间隔,如[1,6] ??'

我希望它能够使用(1,3)(1,3)[1,3]和[1,3]返回所有场景,但是没有if语句。我怎么能做一个return语句才能返回这些场景

4 个答案:

答案 0 :(得分:0)

删除等号(=)。像那样:

return (n > leftNumber && n < rightNumber);

您可以修改其他情况(例如[1,6]和(1,6 []

答案 1 :(得分:0)

如果您想要工作间隔0dp

,请将您的退货声明更改为如下所示
     <android.support.v7.widget.CardView
              :
              : > 
        <RelativeLayout
                :
                : >
            <LinearLayout
                android:id="@+id/toolbarBack"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/rlDetailLayoutBack"
                android:layout_marginTop="4dp"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                android:weightSum="4">

                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fabDirections"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:src="@drawable/directions1"
                    android:borderWidth="0dp"
                    android:elevation="8dp"
                    android:layout_weight="1"/>

                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fabCallMobile"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:src="@drawable/mobile"
                    android:borderWidth="0dp"
                    android:elevation="0dp"
                    android:layout_weight="1"/>

                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fabCallLandline"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:src="@drawable/landline"
                    android:borderWidth="0dp"
                    android:elevation="0dp"
                    android:layout_weight="1"/>

                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fabWebsite"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:src="@drawable/website1"
                    android:borderWidth="0dp"
                    android:elevation="0dp"
                    android:layout_weight="1"/>

            </LinearLayout>
                 :
                 :
         </RelativeLayout>
     </android.support.v7.widgetCardView>

对于[1,6),可以修改return语句,如下所示

return (n >= leftNum && n < rightNum);

答案 2 :(得分:0)

您需要一个类来定义比较每一侧所需的间隔类型。我会使用枚举:

public enum Interval {
    CLOSED, OPEN;
}

然后,您将方法声明重新定义为:

public boolean contains(double number, Interval left, Interval right)

并使用三元运算符重新定义return语句以返回所需的布尔值。

答案 3 :(得分:0)

考虑到你的限制,我能想到的唯一方法是添加一个间接级别。您的contains方法需要进行某种间隔计算:

boolean contains(double number, Interval interval) {
  double leftNum = this.getLeftEndPoint();
  double rightNum = this.getRightEndPoint();

  return interval.check(leftNum, number, rightNum);
}

然后创建所需的四个间隔对象:

class ClosedInterval implements Interval {
  @Override
  boolean check(double lowerBound, double value, double upperBound) {
    return (lowerBound <= value) && (value <= upperBound);
  }
}

class LowerHalfOpenInterval implements Interval {
  @Override
  boolean check(double lowerBound, double value, double upperBound) {
    return (lowerBound < value) && (value <= upperBound);
  }
}

etc...
但是,对于手头的问题,这似乎是不必要的复杂。您也可以为要处理的各种包含变体定义单独的方法。