Java - 尝试根据参数中的 2 个字符串值抛出错误

Java - Trying to throw an error based on 2 string values in the parameter

我正在尝试根据 2 个条件验证参数。 必须是字符串,不区分大小写。如果参数不等于“title”或“author”,它应该抛出一个错误。代码的第一部分似乎有效,但第二部分说它总是正确的,每次我都会出错。这是部分代码。

if(!"title".equalsIgnoreCase(property))
    {
       throw new IllegalNovelPropertyException("Bad Property");
    }

if(!"author".equalsIgnoreCase(property))
    {
        throw new IllegalNovelPropertyException("Bad Property");
    }

如果代码有效,那就太好了。但是,您可能想写

if(!property.equalsIgnoreCase("title") && !property.equalsIgnoreCase("author")) {}

有两个变化:

首先,if(! )语句合并为if(! && ! )。这样更简单,避免编写不必要的语句。

其次,if(!"title".equalsIgnoreCase(property)) 改为 if (!property.equalsIgnoreCase("title"))

.左边的变量和被比较的字符串写成equalsIgnoreCase()的参数是比较常用的写法;也许这是一个偏好问题而不是逻辑问题,尽管它可能很容易成为一个实用性问题。查看它,或者只是将其更改为通用符号以确保安全。直觉上,它们看起来是一样的: 你的方式:if (!variable == string) 常用方式:if (!string == variable) *请注意,出于此逻辑的目的,

== = .equals() :)

这很有趣,所以更清楚:

== 等同于 .equals()

另请注意 (== == .equals()) = false :) 在 Java,

==,一个布尔比较器,不等于 .equals(),一个使用布尔比较的字符串比较器。您 可以 使用 == 来比较字符串,但是 .equals() 更强大:如您所见,它可以使用更高级的比较,例如 .equalsIgnoreCase()

有了这个背景,原来的逻辑就更简单了:

你的方式:if (!b == a){}

常用方式:if (!a == b){}

如果将其简化为这些语句,则这两个符号看起来相等。

所有这些只是说明您可能想要重新安排您的语法;如果您仍然遇到错误,请告诉我们。