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 楼答案
不连接
str
的第一个和第二个字符,它将两个char
的数值相加在您的示例中,将“1”(49)的数值与“0”(48)的数值相加,得到97+“k”而不是“10k”
相反,请使用:
或
为了执行
String
串联这同样适用于:
应将其更改为:
或:
作为替代,您可以使用
StringBuilder
而不是String
串联