如何解决StringBuilder 未初始化为给定的长度值
我正在尝试创建一个具有给定长度的 StringBuilder 对象,但每次尝试这样做时,StringBuilder 对象的长度都会打印为 0。有人知道为什么吗?
struct NewView: View {
let model = AudiCar()
@Observevedobject var values: impData
@State var price = ""
var body: some View {
Text("calculated price is " + price)
.onAppear {
calculatePrice()
}
}
func calculatePrice() {
do {
...
price = String(AudiCarOutput.price)
}
catch {
...
}
}
}
在上面的代码中,StringBuilder对象的长度应该是2(从“i”的长度减去1+1),但是当我在Eclipse中打印StringBuilder的长度时,我得到了0,我把长度改成了17和 100,但我仍然得到 0 作为 String s = "i";
StringBuilder sb = new StringBuilder(s.length()+1);
System.out.println(sb.length());
的长度。
解决方法
您没有在该构造函数中设置其长度。您正在设置它的 capacity
它的长度是 chars
实际上在中的数量,而你还没有附加任何
那是因为您正在设置 StringBuilder 的最大容量。长度表示构造字符串的实际大小。让我演示一下:
020
输出:
StringBuilder sb = new StringBuilder(5);
System.out.println("Length after initialization with capacity: " + sb.length());
sb.append("abcd");
System.out.println("Length after appending: " + sb.length());
,
根据official documentation for the StringBuilder(int capacity)
constructor,
构造一个字符串生成器,其中不包含任何字符,初始容量由容量参数指定。
StringBuilder
实例中还没有字符。它只是根据您传入的 int
参数设置用于存储数据的资源的初始容量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。