Java 字符串比较不使用';我不会马上回来的

Java 字符串比较不使用';我不会马上回来的,java,string,compare,compareto,Java,String,Compare,Compareto,我想用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");

我想用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);
int result=“650”。与(“651”)相比;
如果(结果<0){
System.out.println(“较小”);
}否则,如果(结果>0){
System.out.println(“更大”);
}否则{
System.out.println(“等于”);
}
系统输出打印项次(结果);
这将使输出更小,这是正确的

例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);
int result=“650”。与(“1000”)比较;
如果(结果<0){
System.out.println(“较小”);
}否则,如果(结果>0){
System.out.println(“更大”);
}否则{
System.out.println(“等于”);
}
系统输出打印项次(结果);
这将随着输出的增加而恢复。这有点奇怪,因为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");
    }
int result=“650/65”。与(“1050/50”)相比;
如果(结果<0){
System.out.println(“较小”);
}否则,如果(结果>0){
System.out.println(“更大”);
}否则{
System.out.println(“等于”);
}
这返回“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");
    }
String maat=“650/65”;
int submatb=0;
int subdata=0;
if(主包含(“/”){
试一试{
subdata=Integer.parseInt(maat.substring(0,maat.lastIndexOf(“/”));
submatb=Integer.parseInt(maat.substring(maat.lastIndexOf(“/”)+1));
}捕获(数字格式){
}
}
布尔结果=子数据>=440;
布尔结果b=submatb>=65;

boolean resultC=subdata您在这些示例中比较的是字符串,而不是整数。在这种情况下,结果将按字母顺序进行比较。不管后面的字符是什么,“6”都大于“1”。

字符串比较按字典顺序比较字符串,因此“6…”大于“1…”。要比较数值,您应该将字符串转换为数字类型

您需要在比较之前通过(比如)Integer.parseInt(String)
将字符串转换为数字

此时,您正在比较实际的字符串内容。那不在乎你是否写了1000。它不会将它解释为一个数字。

“3”。compareTo(“2”)
“三个”。比较“两个”

这意味着它们都是字符串比较

String.compareTo()
按字典顺序比较两个字符串。比较基于 字符串中每个字符的Unicode值。字符序列 由该字符串对象表示的对象按字典顺序与 由参数字符串表示的字符序列。结果是一场灾难 负整数,如果此字符串对象按字典顺序位于 参数字符串。如果此字符串 对象按字典顺序跟随参数字符串。结果是 如果字符串相等,则为零;compareTo在 equals(Object)方法将返回true

这是词典排序的定义。如果有两个字符串 不同,那么它们在某个索引中有不同的字符 这是两个字符串的有效索引,或者它们的长度为 不同,或者两者都不同。如果它们在一个或多个位置具有不同的字符 指数位置,设k为此类指数的最小值;然后是字符串 其在位置k处的字符具有较小的值,由 使用<运算符,按字典顺序优先于另一个字符串。在里面 在这种情况下,compareTo返回两个字符的差值 两个字符串中位置k处的值--即值:

此.charAt(k)-另一个字符串.charAt(k)如果没有索引 它们不同的位置,然后是较短的字符串 按字典顺序在较长字符串之前。在这种情况下,比较 返回字符串长度的差值,即 价值:

如果要将它们作为整数进行比较,必须先将它们转换为整数。

试试这个

int inputOne = Integer.parseInt("650");
int inputTwo = Integer.parseInt("1000");
int result = inputOne - inputTwo;
    if(result < 0){
        System.out.println("smaller");
    } else if(result > 0){
        System.out.println("bigger");
    } else {
        System.out.println("equals");
    }
    System.out.println(result);
intinputone=Integer.parseInt(“650”);
int inputwo=Integer.parseInt(“1000”);
int结果=输入按钮-输入WO;
如果(结果<0){
System.out.println(“较小”);
}否则,如果(结果>0){
System.out.println(“更大”);
}否则{
System.out.println(“等于”);
}
系统输出打印项次(结果);

您可以使用compareTo()方法将两个数字作为字符串进行比较

比较 compareTo()方法使用基于unicode的值。这意味着,如果使用compareTo()方法,它将按字母顺序对其进行排序。此外,compareTo()方法主要只用于值,并带有一个implementet Compactable接口

如果要比较两个字符串,必须使用

string.equals(comparestring);

对于您的示例,您必须将字符串转换为整数。你是这样做的:

Integer.parseInt(string);
如果您希望将其返回到字符串,因为您希望将其放入字符串链接列表或仅作为输出,请使用:

string.toString();

这里的关键是数据类型很重要。不同的类型,比较的含义可能不同。字符串比较是关于Unicode字符顺序,而不是整数或有理数大小。问题是关于tiresizes,tiresize被写成类似620/75R38的字符串,我删除了R38,因为这无关紧要。但我必须看看轮胎尺寸是否在620/75-1050/50之间。因此,我确实想使用字符串compareTo(),但我想那是不可能的?我想如果我在620和1050中进一步拆分字符串,然后看看哪个更大。放回字符串,用同样的方法检查最后的数字?