我想知道是否有可能使下面的代码更小,基本上是if else语句,每次只有3件事情发生变化我觉得我只是在重复自己,所以我觉得如果有的话让它变小的方法。
if (text1.getText == "1" && text2.text == "2"){
text3.setText("3");
}
else if(text3.getText == "1" && text4.text == "2"){
text7.setText("3");
}
else if(text5.getText == "1" && text6.text == "2"){
text4.setText("3");
}
else if(text7.getText == "1" && text8.text == "2"){
text5.setText("3");
}
else if(text9.getText == "1" && text10.text == "2"){
text6.setText("3");
}
else if(text11.getText == "1" && text12.text == "2"){
text2.setText("3");
}
else if(text13.getText == "1" && text14.text == "2"){
text14.setText("3");
}
......
else{
Statement here
}
答案 0 :(得分:1)
每个textN
和textN+1
对的模式都是如此,如果上述两个标记为textM
,则会将其他3
设置为1
分别为2
。我没有看到将对与他们的目标文本连接的模式,所以我建议:
Text
类型,请使用以下方法之一存储它们:
Text[] texts = new Text[N];
ArrayList<Text> texts = new ArrayList<Text>();
Text
个实例放入数组或ArrayList
Text
的奇数并返回目标Text
进行修改(查找HashMap
)for
循环遍历其他Text
实例以下是一个示例,如果您使用的是数组和某种方法findTarget
:
for (int i = 0; i+1 < texts.length; i+=2) {
if texts[i].getText().equals("1") && texts[i+1].getText().equals("2") {
texts[findTarget(i)].setText("3");
break;
}
}
答案 1 :(得分:1)
boolean didIt = false;
ArrayList<JTextField[]> listOfStuff = new ArrayList<JTextField[]>();
listOfStuff.add({ text1, text2, text3 });
listOfStuff.add({ text3, text4, text7 });
....
listOfStuff.add({ text13, text44, text14 });
for (JTextField[] fields : listOfStuff) {
didIt = didIt || setToThree(fields[2], fields[0], fields[1]);
}
if (!didIt) {
Statement here
}
功能:
boolean setToThree(JTextField target, JTextField first, JTextField second) {
if ("1".equals(first.getText()) && "2".equals(second.getText()) {
target.setText("3");
return true;
}
return false;
}
答案 2 :(得分:0)
您可以创建一个功能来执行此操作。
function CheckValues (a, b, c){
if (a.getText().equals("1") && (b.getText().equals("2")){
c.setText("3");
}
}
然后运行:
CheckValues(text1,text2,text3);
CheckValues(text3,text4,text7);
CheckValues(text5,text6,text11);