我已经查看了一段时间,但是我的if语句也可以通过单选按钮进行选择的事实似乎使我有些困惑。
df2
.filter(row => row("colName") != null)
我尝试了一个if,else if,else语句,但是我的非二进制按钮选择由此中断。现在这是可行的,但我想看看是否有一种方法可以缩短它。
答案 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中使用。