缩短我的if语句-Java

时间:2018-08-10 08:59:10

标签: java swing

我已经查看了一段时间,但是我的if语句也可以通过单选按钮进行选择的事实似乎使我有些困惑。

df2
  .filter(row => row("colName") != null)

我尝试了一个if,else if,else语句,但是我的非二进制按钮选择由此中断。现在这是可行的,但我想看看是否有一种方法可以缩短它。

4 个答案:

答案 0 :(得分:2)

在您的单选按钮上使用ButtonGroup

ButtonGroup group = new ButtonGroup();
group.add(male);
group.add(female);
group.add(nonbinary);

使用ButtonGroup,您无需将单个JRadioButton-s存储为字段。

因此,您可能会从组中获得状态(选定对象)。使用数据模型:

static class Gender {
    final String p;
    final String p2;
    Gender(String p, String p2) {
        this.p = p;
        this.p2 = p2;
    }
}

尽管实际上可能不会更短,但是起毛更少,并且代码更准确,并且更容易出错。

答案 1 :(得分:1)

抽象将很有帮助。最简单的形式如下:

final static Pair<String, String> MALE = new Pair<>("he", "him");
...

那将允许您去:

if (male.isSelected()) {
  p1 = MALE.getFirst(); p2 = MALE.getSecond();

下一步:删除代码重复项:

Pair<String, String> selectedPair = null);
if (male.isSelected) selectedPair = MALE;
else if (female.isSelected) selectedPair = FEMALE;
...

p1 = selectedPair.getFirst(); p2 = ...

然后,您可以退后一步,考虑是否可以进行某种映射,从而使您可以进入

Map<Whatever, Pair<String, String>> mappedPairs = ...

以某种方式使用:

Pair<String, String> selectedPair = mappedPairs.get(X);
p1 = selectedPair.getFirst(); p2 = ...

X当然是这里的棘手部分。

答案 2 :(得分:0)

我将使用一个枚举来容纳您所有可能的性别,例如

private enum genderStates {
         male,
         female,
         nonBinary,
         sMale,
         sFemale,
         sNonBinary;
}

然后使用

等字段来跟踪当前选择的性别
private genderStates currentGender = genderStates.male;

答案 3 :(得分:0)

给出的答案均未根据需要与该程序一起使用,或者没有缩短我希望的代码长度。但是,我能够找到一种解决方案,将其缩短一些并从我的主要产品中删除,并希望在此处共享以供其他人查看。

static String p,p1,p2,p3;
    gender(String selfGender){

    if (null != selfGender) 
    switch (selfGender) {
        case "Male":
            p="he";
            p1="his";
            p2="him";
            p3="himself";
            break;
        case "Female":
            p="she";
            p1="her";
            p2="her";
            p3="herself";
            break;
        case "Non Binary":
            p="they";
            p1="them";
            p2="their";
            p3="themself";
            break;
        default:
            break;
    }
}

这是我放入另一个类中以保存性别信息的代码,对于其他用户输入,我也再次针对性别2进行了此操作。

gender gender1 = new gender(selfGender);

这已放入我的主类中,以调用信息并在GUI中使用。