微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

StringBuilder 未初始化为给定的长度值

如何解决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 举报,一经查实,本站将立刻删除。