我可以在布尔函数中使用 CompareTo 吗?

问题描述 投票:0回答:1

我想按字母顺序对城市名称进行排序,因此我使用 CompareTo 来比较城市名称以对其进行排序。但是 CompareTo 给了我一个 Int 而 && 不喜欢这样。另外,请注意 - 我不允许使用数组。

sFirst = (sCity1.compareToIgnoreCase(sCity2) != 0) && (sCity1.compareToIgnoreCase(sCity3)) ?
                sCity1 : sCity2.compareToIgnoreCase(sCity3) ? sCity2 : sCity3;

“我尝试在 && 之前加上 > 0,但这似乎没有任何作用,我没有主意了”

java boolean compareto
1个回答
0
投票

String#compareToIgnoreCase方法将返回差异。

这里有一个评估返回值的方法。

  • "a".compareToIgnoreCase("b")将为负数
  • "a".compareToIgnoreCase("a") 将为零
  • 并且,"b".compareToIgnoreCase("a")将为正值

要更正您的条件语句,您需要添加这些。

sFirst
    = sCity1.compareToIgnoreCase(sCity2) < 0
        ? sCity1.compareToIgnoreCase(sCity3) < 0
            ? sCity1
            : sCity3
        : sCity2.compareToIgnoreCase(sCity3) < 0
            ? sCity2
            : sCity3;

或者,使用

sFirst = Stream.of(sCity1, sCity2, sCity3).sorted().toList().get(0);
© www.soinside.com 2019 - 2024. All rights reserved.