我有个声纳窃听器:
改为使用原始值。规则:对于可以是“min_value”的数字,不应使用“math.abs”或否定
public int compareDates(MyDto a, MyDto b) {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy hh:mm");
try {
Date dateA = sdf.parse(a.getStartDate() + " " + a.getStartHour());
Date dateB = sdf.parse(b.getStartDate() + " " + b.getStartHour());
return - dateA.compareTo(dateB); //Sonar BUG
} catch (ParseException e) {
logger.error("Unable to parse date: " + e.getMessage());
return 0;
}
}
现在我真的不知道该做些什么来修正。从比较中返回的整数可以是负数也可以是不是负数,我怎么解决才能让SQ开心呢?
IMO这几乎是假阳性。
datea.compareto(dateB)
的结果可能是integer.min_value
,在这种情况下,-datea.compareto(dateB)
的计算结果也是integer.min_value
,因此不会产生所需的结果。
实际上,该调用极有可能返回-1
、0
或1
(即,它并不是指定只返回这些值,而是我所见过的date.compareto()
的所有实现都返回这些值)。
只要返回dateb.compareto(dateA)
就可以了!只是交换你所用的论点,就像否定结果一样,没有声纳提到的风险。
通过删除所有前导和尾随空格返回一个新字符串。 但是,此方法不会丢弃两个字符串之间的空格。 语法 (Syntax) compareTo(String other) 返回值 (Return Type) 返回表示两个字符串之间关系的整数。 0 - 字符串相等时。 1 - 当第一个字符串大于第二个字符串时 -1 - 当第一个字符串小于第二个字符串时 例子 (Example) void main() {
它返回一个整数,表示两个数字之间的关系。 语法 (Syntax) Number.compareTo(x) 参数 (Parameter) x - 代表一个数字。 返回值 (Return Value) 返回值 - 0 - 如果值相等。 1 - 如果当前数字对象大于指定的数值。 -1 - 如果当前数字对象小于指定的数字值。 例子 (Example) void main() { var a =
比较两个日期的订购。 语法 (Syntax) public int compareTo(Date anotherDate) 参数 (Parameters) anotherDate - 要比较的日期。 Return Value - 如果参数Date等于此Date,则值为0 ; 如果此Date在Date参数之前,则小于0的值; 如果此Date在Date参数之后,则值大于0 。 例子 (Example
compareTo方法是使用一个数字与另一个数字进行比较。 如果要比较数字的值,这很有用。 语法 (Syntax) public int compareTo( NumberSubClass referenceName ) 参数 (Parameters) referenceName - 可以是Byte,Double,Integer,Float,Long或Short。 返回值 (Return Va
描述 (Description) 该方法将调用方法的Number对象与参数进行比较。 可以比较Byte,Long,Integer等。 但是,无法比较两种不同的类型,参数和调用方法的Number对象应该是相同的类型。 语法 (Syntax) public int compareTo( NumberSubClass referenceName ) 参数 (Parameters) 这是参数的细节 -
我试图实现Comparable和compareTo(),但似乎无法实现。我一直在尝试不同的方法,但我真的不明白。我知道我应该实现可比较的接口,并且我需要在使用它之前创建方法(对我来说很奇怪,从python到面向对象编程)。 我希望它能比较两个人的年龄,所以我试着编写如下所示的代码,但似乎我不能使用compareTo()。我收到错误消息:“此方法必须返回int类型”,但在我看来,我只返回1、-1和0