将字符附加到String不会产生预期的结果

时间:2017-01-22 13:20:38

标签: java

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

出于一些奇怪的原因,它可以正常使用数字< 10000,但从那时起,它只显示了奇怪的结果

功能是:

$image = $row['image1'];
echo "<img src=\"$image\">";

一些测试和结果:

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 "";
}

我做错了什么?它与数字大于10000有什么关系吗?

1 个答案:

答案 0 :(得分:9)

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

不会连接str的第一个和第二个字符,它会添加两个char的数值。

在您的示例中,&#39; 1&#39;的数值(49)和&#39; 0&#39;的数值(48)被添加,你得到97 +&#34; k&#34;而不是&#34; 10k&#34;。

相反,请使用:

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连接。