我想通过一个开关或一个函数来替换它们来减少if的数量,这有可能吗??因为我的代码太长了,我认为一个函数比一个重复的if或else能更好地完成这项工作,而且它也会更容易理解。
double a = text.charAt(39), b= text.charAt(40), c= text.charAt(41), d= text.charAt(42) ;
Collection<Double> list=new ArrayList<Double>();
list.add(a);
list.add(b);
list.add(c);
list.add(d);
if ( a>=15||b>=15||c>=15||d>=15) {
if ( Collections.max(list) == a) {
Defauts_detecteur.setText("Défauts récurrents constatés sur le détecteur 1");
}
else if ( Collections.max(list) == b)
{
Defauts_detecteur.setText("Défauts récurrents constatés sur le détecteur 2");
}
else if ( Collections.max(list) == c )
{
Defauts_detecteur.setText("Défauts récurrents constatés sur le détecteur 3");
}
else
{
Defauts_detecteur.setText("Défauts récurrents constatés sur le détecteur 4");
}
Conseil_detecteur.setText("--> Par mesure de sécurité, nous vous conseillons vivement de vérifier que le détecteur est bien collé au produit à sécuriser.\nPour une adhésion optimale, remplacez l’adhésif.\nVérifiez que le détecteur est bien connecté à la centrale et qu’il est en bon état.");
}
else {
Conseil_detecteur.setText("--> Des alarmes régulières ? Envie d'en savoir plus ?\nContactez notre hotliner au 02 37 33 69 66 qui vous guidera dans leurs résolutions.");
Defauts_detecteur.setVisibility(View.GONE);
}
2条答案
按热度按时间7rtdyuoh1#
始终可以使用循环(或流,具体取决于性能要求):
请注意,如果两个值相同且为max(例如a=16、b=16、c=12、d=9),则当前代码的行为不明确。输出为“探测器1”,但“探测器2”也是最大值。
如果您的列表可以包含多个max值,并且您希望找到所有max值,那么您需要稍微更改您的循环(但是您现有的代码只找到了“first”值的位置)。
siv3szwd2#
功能风格:
将处理任意数量的数据。