【发布时间】:2013-08-28 10:27:56
【问题描述】:
我想用 compareTo() 函数比较两个字符串。
示例:
int result = "650".compareTo("651");
if(result < 0){
System.out.println("smaller");
} else if(result > 0){
System.out.println("bigger");
} else {
System.out.println("equals");
}
System.out.println(result);
这将输出更小,这是正确的。
示例 2:
int result = "650".compareTo("1000");
if(result < 0){
System.out.println("smaller");
} else if(result > 0){
System.out.println("bigger");
} else {
System.out.println("equals");
}
System.out.println(result);
这将作为输出更大返回。这有点奇怪,因为 650 因为数字小于 1000。
怎么样,我该如何改变它? (是的,数字必须是文本格式)。
我想这样做:
int result = "650/65".compareTo("1050/50");
if(result < 0){
System.out.println("smaller");
} else if(result > 0){
System.out.println("bigger");
} else {
System.out.println("equals");
}
这会返回“650/65”大于“1050/50”但实际上它更小。
编辑
我已经解决了这些案例,现在是这样的:
String maat = "650/65";
int subMaatB = 0;
int subMaatA = 0;
if(maat.contains("/")){
try{
subMaatA = Integer.parseInt(maat.substring(0, maat.lastIndexOf("/")));
subMaatB = Integer.parseInt(maat.substring(maat.lastIndexOf("/")+1));
} catch (NumberFormatException e){
}
}
boolean resultA = subMaatA >= 440;
boolean resultB = subMaatB >= 65;
boolean resultC = subMaatA <= 1050;
boolean resultD = subMaatB <= 50;
if(resultA && resultB && resultC && resultD){
System.out.println("BIGGER");
} else {
System.out.println("Smaller");
}
因此,Maat 必须在 440/65 和 1050/50 的范围内。 Maat 应该在我之前提到的范围之间。
【问题讨论】:
-
这里的关键点是数据类型很重要。对于不同的类型,比较的含义可能不同。字符串比较是关于 Unicode 字符排序,而不是关于整数或有理数。
标签: java string compare compareto