如何更有效地编写此 Java 逻辑代码?
How can I write this Java logic code more efficiently?
我的 activity 中有四个 TextView。根据收到的消息,我想更改这四个 TextView 的格式,使一个更大且粗体,而其余的更小且样式规则。为此,我创建了两个方法,setTextNormal 和 setTextBig。为了更改数字,我使用了这段代码:
if (tokens[2].equals("0")) {
setTextBig(text1);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text4);
}
if (tokens[2].equals("1")) {
setTextBig(text2);
setTextNormal(text1);
setTextNormal(text3);
setTextNormal(text4);
}
if (tokens[2].equals("2")) {
setTextBig(text3);
setTextNormal(text2);
setTextNormal(text1);
setTextNormal(text4);
}
if (tokens[2].equals("3")) {
setTextBig(text4);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text1);
}
请注意,对于每个 if 语句,其中一个 TextView 被设置为 big,其余设置为 normal。它有效,但是有没有更有效的方法来设置这些 TextView?
不确定是否真的更有效,但只是先将所有文本设置为正常,然后仅将特定文本更改为大型作品,例如。
setTextNormal(text4);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text1);
if (tokens[2].equals("0")) {
setTextBig(text1);
} else if (tokens[2].equals("1")) {
setTextBig(text2);
} else if (tokens[2].equals("2")) {
setTextBig(text3);
} else if (tokens[2].equals("3")) {
setTextBig(text4);
}
也许你可以做类似的事情。
setTextNormal(text1);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text4);
if (tokens[2].equals("0")) {
setTextBig(text1);
} else if (tokens[2].equals("1")) {
setTextBig(text2);
} else if (tokens[2].equals("2")) {
setTextBig(text3);
} else if (tokens[2].equals("3")) {
setTextBig(text4);
}
检查是否可以将文本设置为正常,然后将其设置为大。
创建一个文本变量数组,例如 [text1, text2, text3, text4]
按照其他用户的建议,在开始时将所有文本设置为正常,然后执行以下操作:
setTextBig(texts[tokens[2]]);
我建议将您的代码更改为具有 setTextSize(text, boolean big)
方法,并按如下方式使用它:
String token = tokens[2];
setTextSize(text1, /*big*/token.equals("0"));
setTextSize(text2, /*big*/token.equals("1"));
setTextSize(text3, /*big*/token.equals("2"));
setTextSize(text4, /*big*/token.equals("3"));
void setNormal(){
setTextNormal(text1);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text4);
}
switch(tokens[2]){
case "0":
setNormal();
setTextBig(text1);
break;
case "1":
setNormal();
setTextBig(text2);
break;
case "2":
setNormal();
setTextBig(text3);
break;
case "3":
setNormal();
setTextBig(text4);
break;
default:
break;
}
将重复的相似度提取到一个方法中
setText(字符串大,字符串...小)
// 注意第二个参数是可变参数,它是一个或多个参数
//setTextLarge(大)
//遍历可变参数数组small和setTextSmall
然后使用提取的方法
如果标记为 0 setText(text1, text2, text3)
如果token是2 setText(text2, text1, text3)
如果token是2 setText(text3, text1, text2)
if (tokens[2].equals("0")) {
setTextsOrder(text1, text2, text3, text4);
} else if (tokens[2].equals("1")) {
setTextsOrder(text2, text1, text3, text4);
} else if (tokens[2].equals("2")) {
setTextsOrder(text3, text2, text1, text4);
} else if (tokens[2].equals("3")) {
setTextsOrder(text4, text2, text3, text1);
}
}
.
.
private static void setTextsOrder(String text, String... texts) {
setTextBig(text);
for (String textIt : texts) {
setTextNormal(textIt);
}
}
我的 activity 中有四个 TextView。根据收到的消息,我想更改这四个 TextView 的格式,使一个更大且粗体,而其余的更小且样式规则。为此,我创建了两个方法,setTextNormal 和 setTextBig。为了更改数字,我使用了这段代码:
if (tokens[2].equals("0")) {
setTextBig(text1);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text4);
}
if (tokens[2].equals("1")) {
setTextBig(text2);
setTextNormal(text1);
setTextNormal(text3);
setTextNormal(text4);
}
if (tokens[2].equals("2")) {
setTextBig(text3);
setTextNormal(text2);
setTextNormal(text1);
setTextNormal(text4);
}
if (tokens[2].equals("3")) {
setTextBig(text4);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text1);
}
请注意,对于每个 if 语句,其中一个 TextView 被设置为 big,其余设置为 normal。它有效,但是有没有更有效的方法来设置这些 TextView?
不确定是否真的更有效,但只是先将所有文本设置为正常,然后仅将特定文本更改为大型作品,例如。
setTextNormal(text4);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text1);
if (tokens[2].equals("0")) {
setTextBig(text1);
} else if (tokens[2].equals("1")) {
setTextBig(text2);
} else if (tokens[2].equals("2")) {
setTextBig(text3);
} else if (tokens[2].equals("3")) {
setTextBig(text4);
}
也许你可以做类似的事情。
setTextNormal(text1);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text4);
if (tokens[2].equals("0")) {
setTextBig(text1);
} else if (tokens[2].equals("1")) {
setTextBig(text2);
} else if (tokens[2].equals("2")) {
setTextBig(text3);
} else if (tokens[2].equals("3")) {
setTextBig(text4);
}
检查是否可以将文本设置为正常,然后将其设置为大。
创建一个文本变量数组,例如 [text1, text2, text3, text4]
按照其他用户的建议,在开始时将所有文本设置为正常,然后执行以下操作:
setTextBig(texts[tokens[2]]);
我建议将您的代码更改为具有 setTextSize(text, boolean big)
方法,并按如下方式使用它:
String token = tokens[2];
setTextSize(text1, /*big*/token.equals("0"));
setTextSize(text2, /*big*/token.equals("1"));
setTextSize(text3, /*big*/token.equals("2"));
setTextSize(text4, /*big*/token.equals("3"));
void setNormal(){
setTextNormal(text1);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text4);
}
switch(tokens[2]){
case "0":
setNormal();
setTextBig(text1);
break;
case "1":
setNormal();
setTextBig(text2);
break;
case "2":
setNormal();
setTextBig(text3);
break;
case "3":
setNormal();
setTextBig(text4);
break;
default:
break;
}
将重复的相似度提取到一个方法中
setText(字符串大,字符串...小)
// 注意第二个参数是可变参数,它是一个或多个参数
//setTextLarge(大)
//遍历可变参数数组small和setTextSmall
然后使用提取的方法
如果标记为 0 setText(text1, text2, text3)
如果token是2 setText(text2, text1, text3)
如果token是2 setText(text3, text1, text2)
if (tokens[2].equals("0")) {
setTextsOrder(text1, text2, text3, text4);
} else if (tokens[2].equals("1")) {
setTextsOrder(text2, text1, text3, text4);
} else if (tokens[2].equals("2")) {
setTextsOrder(text3, text2, text1, text4);
} else if (tokens[2].equals("3")) {
setTextsOrder(text4, text2, text3, text1);
}
}
.
.
private static void setTextsOrder(String text, String... texts) {
setTextBig(text);
for (String textIt : texts) {
setTextNormal(textIt);
}
}