我想检查t1,t2和t3,看它们是否在13-19的范围内。如果三个中至少有一个是我想返回true,如果它们都不是我想返回false 。这段代码有效,但是我想知道是否有更简洁的编写方式,例如:
if (t1 || t2 || t3 >13 && <19) return true else return false?
这是我当前的代码。
public class NumberChecker {
public static boolean hasNumber(int t1, int t2, int t3) {
if ( (t1 >=13 && t1 <=19) || (t2 >=13 && t2 <=19) || (t3 >=13
&& t3 <=19) ) {
return true;
} else return false;
}
}
欢呼
答案 0 :(得分:3)
每当您发现自己写import pandas as pd
import numpy as np
df = pd.read_csv("file1.csv", index_col=0, header=1)
values = df.loc['利用額(Fee込み)', '全体'].astype(str).apply(lambda x: x.split(".")[0])
时,请意识到您可以用较短且等效的if (x) return true; else return false;
代替它。乍一看似乎很奇怪,但是可以直接返回布尔条件。您无需检查它们是否为真,然后返回true。
return x;
然后,您可以选择将公共范围检查逻辑提取到辅助方法中。它使代码更长一些,但是冗余更少。如果您更喜欢此版本,则取决于您;这确实是一个美学决定。
public static boolean hasNumber(int t1, int t2, int t3) {
return (t1 >=13 && t1 <=19) || (t2 >=13 && t2 <=19) || (t3 >=13 && t3 <=19);
}
答案 1 :(得分:0)
您可以使用stream和匿名lambda function一行进行匹配:
return IntStream.of(t1, t2, t3).anyMatch(t -> t >= 13 && t <= 19);
或者您可以使用varargs根据参数自动构建数组:
public static boolean hasNumber(int... ts) {
for (int t: ts) {
if (t >= 13 && t <= 19) {
return true;
}
}
return false;
}
(答案为@shmosel)