如果我有3个字符串变量string1 string2和string3,并且根据用户输入,其中一些变量可能是空的,我该怎么做?我想将这些变量与我已经设置的另外3个变量进行比较,除非相应的字符串(string1/string2/string3)输入为空
这个想法是这样的:
如果没有一个是空的,那么:
if (o.s1.equals(string1) && o.s2.equals(string2) && o.s3.equals(string3))
如果s1是唯一一个空的,那么我们只比较其他2个:
if (o.s2.equals(string2) && o.s3.equals(string3))
因此,如果输入的字符串为空,程序将不会检查该变量是否相等
有没有一种方法不需要一堆嵌套的if语句?我有5个变量,所以会有很多语句
对于更多的上下文,我想用它做的是一个搜索函数,其中有3个条件,如果所有3个字段都被填充,那么它将搜索满足所有3个条件的内容,但是如果其中一个是空的,那么它将只查找满足其中2个条件的条目,如果2为空,它将搜索只满足一个条件的条目。
我将为谓词检查添加一个简单的实用方法,该方法仅在input
不为空时比较值:
public static boolean nonBlankEquals(String input, String value) {
return input == null || input.isEmpty() || input.equals(value);
}
因此,客户端代码的可读性会提高一点,您不需要重复if
子句中的变量;这将变得越来越重要,因为需要进行更多的比较。
if (nonBlankEquals(string1, o.s1)
&& nonBlankEquals(string2, o.s2)
&& nonBlankEquals(string3, o.s3)
&& nonBlankEquals(string4, o.s4)
&& nonBlankEquals(string5, o.s5)) {
// all inputs were blank or equal to corresponding values
}
您可以创建一个助手函数,该函数无论有多少个元素都可以工作:
public static boolean areEqual(String[] objectElements, String[] userInputStrings){
return IntStream.range(0, objectElements.length)
.allMatch(x -> userInputStrings[x].isEmpty() ||
userInputStrings[x].equals(objectElements[x]));
}
那么就这样称呼它:
boolean result = areEqual(new String[]{o.s1,o.s2, o.s3,o.s4,o.s5 },
new String[]{string1,string2,string3,string4,string5});
如果“empty”的意思是null
,那么你可以这样做。。。
if ((o.s1 == null || o.s1.equals(string1)) &&
(o.s2 == null || o.s2.equals(string2)) &&
(o.s3 == null || o.s3.equals(string3))) {
// ...
}
问题内容: 我试图在z DBOpenHelper扩展SQLOpenHelper类中编写一个方法。它应该评估数据库中是否存在相同名称的条目。 这是Contact类的相关部分: 现在这是奇怪的事情: 方案A:其中和 等于false。Eclipse调试器显示名称的foo和cname的foo具有不同的id。这两个变量都按之前在代码中所示填充。 方案B:像这样加载变量的地方: 方案C:等于true …但是…
Sds (Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示, 几乎所有的 Redis 模块中都用了 sds。 本章将对 sds 的实现、性能和功能等方面进行介绍, 并说明 Redis 使用 sds 而不是传统 C 字符串的原因。 sds 的用途 Sds 在 Redis 中的主要作用有以下两个: 实现字符串对象(StringObject); 在 Re
问题内容: 我的数据如下所示: 我给我一个字符串列表作为 但是,当我传递给时,它仅返回带有的数据,这是列表中的第一个元素。 我想知道是否有人对此有何想法?任何帮助,将不胜感激! 问题答案: 由于我相信R DBI驱动程序尚未实现多个SQL语句支持,因此仅返回第一条语句。 因此,您需要为多个SQL语句迭代运行 sqlcmd ,例如使用with返回数据帧列表,然后调用单个主数据帧: 或者,对一个SQL语
尝试基于列值替换字符串,获取错误值error:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 获取错误值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我只需要检查字符串,如果匹配,则用另一个列值替换它
我试图让一个语句起作用,但由于某些原因,它不起作用。应该很简单。 假设字符串 我的代码是: 两种规格的结果都是1。
我想在Java中通过反射调用一个方法。 我手边有我要调用的方法的Method实例(这样我就可以获得它的参数的类型),此外,我还有这些参数的值作为字符串。 我有一个假设,所有的参数都必须是原语。 例如,如果我要调用以下方法: