是否可以使if else语句代码更小?

时间:2014-02-20 21:03:39

标签: java if-statement

我想知道是否有可能使下面的代码更小,基本上是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
}

3 个答案:

答案 0 :(得分:1)

每个textNtextN+1对的模式都是如此,如果上述两个标记为textM,则会将其他3设置为1分别为2。我没有看到将对与他们的目标文本连接的模式,所以我建议:

  1. 假设这些文本变量属于Text类型,请使用以下方法之一存储它们:
    • Text[] texts = new Text[N];
    • ArrayList<Text> texts = new ArrayList<Text>();
  2. 将所有Text个实例放入数组或ArrayList
  3. 设置一个地图或方法,该地图或方法接受一对连续Text的奇数并返回目标Text进行修改(查找HashMap
  4. 使用for循环遍历其他Text实例
  5. 以下是一个示例,如果您使用的是数组和某种方法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);