【发布时间】:2018-07-07 14:24:30
【问题描述】:
如果我有 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 个为空,它将搜索仅满足一个条件的条目。
【问题讨论】:
-
首先,不要使用
==或!=比较字符串。请改用equals(...)或equalsIgnoreCase(...)方法。了解==检查两个 对象引用 是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否以相同的顺序具有相同的字符,这就是这里的重点。 -
接下来为什么不简单地做
if (o.s1.isEmpty()) {或者在需要的地方反其道而行之? -
我看看是否有更简单的方法,我可以单独检查它们,但任意数量的字符串可能是空的,我的真实程序中有 5 个变量,所以每一个都做一个嵌套的 if else可能性似乎很多工作
-
什么是空的?
null?""?
标签: java string if-statement