有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java向字符串追加字符不会产生预期的结果

我有下面的函数,它获取一个整数(来自数据库,但我已经检查了函数中是否正确发送了数字)。我想转换为字符串,并根据数字的大小以特定的方式返回它

出于某种奇怪的原因,它可以与数字配合使用<;10000,但从那一点上看,它只是显示了奇怪的结果

功能是:

public static String numberTransformation(int number){
    String str=String.valueOf(number);
    System.out.println("#################### NUMBER BEFORE TRANSFORMATION" + str);
    if(number<=999){
        return str;
    }
    else if(number>999 && number<1099){
        return "1k";
    }
    else if(number>1099 && number<=9999){
        return str.charAt(0) + "." + str.charAt(1) + "k";
    }
    else if (number>9999 && number<=99999){
        return str.charAt(0) + str.charAt(1) + "k";
    }
    else if (number>99999 && number<=999999){
        return str.charAt(0) + str.charAt(1) + str.charAt(2) + "k";
    }
    return "";
}

一些测试和结果:

Number is 999 -> result is 999 (expected)
Number is 2532 -> result is 2.5k (expected)
Number is 10000 -> result is 97k (not expected)
Number is 100000 -> result is 145k (not expected)

我做错了什么?这与数字超过10000有关吗


共 (1) 个答案

  1. # 1 楼答案

    return str.charAt(0) + str.charAt(1) + "k";
    

    不连接str的第一个和第二个字符,它将两个char的数值相加

    在您的示例中,将“1”(49)的数值与“0”(48)的数值相加,得到97+“k”而不是“10k”

    相反,请使用:

    return "" + str.charAt(0) + str.charAt(1) + "k";
    

    return str.substring(0,2) + "k";
    

    为了执行String串联

    这同样适用于:

    return str.charAt(0) + str.charAt(1) + str.charAt(2) + "k";
    

    应将其更改为:

    return "" + str.charAt(0) + str.charAt(1) + str.charAt(2) + "k";
    

    或:

    return str.substring(0,3) + "k";
    

    作为替代,您可以使用StringBuilder而不是String串联