Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以使if-else语句代码更小?_Java_If Statement - Fatal编程技术网

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

Java 是否可以使if-else语句代码更小?,java,if-statement,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(

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

对于每一对
textN
textN+1
,如果上述两个分别标记为
1
2
,则可以将另一个
textM
设置为
3
。我看不到将配对与目标文本联系起来的模式,因此我建议:

  • 假设这些文本变量的类型为
    text
    ,请使用以下选项之一存储它们:
    • Text[]Text=新文本[N]
    • ArrayList text=new ArrayList()
  • 将所有
    文本
    实例放入数组或
    数组列表
  • 设置一个映射或方法,该映射或方法接受某对连续
    文本的奇数,并返回要修改的目标
    文本(查找
    HashMap
  • 使用
    for
    循环迭代其他每个
    文本
    实例
  • 下面是一个示例,如果您使用的是数组和某种方法
    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;
        }
    }
    
    for(int i=0;i+1
    您可以创建一个函数来完成此操作

    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);
    

    不要对字符串使用
    =
    getText
    应该是
    getText()
    ?@SimonT,应该是的,我必须在stackoverflow上重写代码,所以我忘了添加它,很抱歉。这个问题甚至没有结束,但如果是,你可以对任何答案发表评论,即使问题已经结束,2)按照我们的建议编辑您的问题以改进它。如果改进,封闭式问题通常会重新打开。我要求你做这两件事是为了尊重其他人为回答你的问题所付出的努力。但是这样做不会运行else语句,或者会吗?嗨,BVB,请你简要解释一下代码。我只是创建了一个文本字段列表。对于每个文本字段列表,都会调用一个函数。如果在函数中修改了文本字段,则返回true。该返回值被读入didIt布尔值,该布尔值控制是否应执行原始代码中的“else”块。
    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;
    }