我正在尝试根据一些玩家获得的得分来将他们与比较器进行比较。
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/