java 用比较器将整数与字符串进行比较 - 奇怪的结果

标签 java int comparator dereference

我正在尝试根据一些玩家获得的得分来将他们与比较器进行比较。

System.out.println("Comparing: " + p2.getRuns() + " and " + p1.getRuns());
int newRESULT = intConvert(p2.getRuns()).compareTo(intConvert(p1.getRuns()));
System.out.println("Returns: " + newRESULT);
return newRESULT;

但是这会返回:

比较:25 和 0, 返回:2

比较:0 和 100, 返回:-1

比较:25 和 100, 返回:1

...因此以错误的顺序对玩家进行排序。

第一次比较是否应该返回 1,第二次比较返回 -1,最后一次也返回 -1?

int转换:

     private static String intConvert(int x)
     {
      return "" + x;
     }

最佳答案

我假设 intConvert(...)int 转换为 String,因此您会得到词法比较,这意味着 “25” 大于 “100”,因为第一个字符更大 (2 > 1)。

如果您想获得正确的比较,请坚持比较int,或者如果您需要使用String,请创建相等长度的字符串并在前面填充缺失的零(例如25 ->“025”)

关于java 用比较器将整数与字符串进行比较 - 奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10418828/

相关文章:

java - 使用比较器在列表中向上移动元素

Java - Comparator类比较方法的定义

java - 为什么播种此 Random 对象会导致意外的 Comparator 行为?

java - 像 Uber 一样透明的操作栏和状态栏

java - 在 Android Studio 中使用 Volley 不眨眼地显示函数数据

c - 编译器是否隐式转换 int 类型

c - 无符号整型算术 - C 初学者

android - 使用 getCurrentTextColor() 设置文本颜色

Java 数字错误

java - Jersey、osgi 和 Servlet 上下文 3.x