Java 是否可以使if-else语句代码更小?
我想知道是否有可能使下面的代码变小,基本上是它的if-else语句,每次只有3个东西在改变,我想我只是在重复我自己,所以我想是否有办法使它变小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 (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;
}