我在java中遇到char数组问题

问题描述 投票:1回答:2

我写了这段代码。我的目标是在char中写入字符串。但我得到ArrayIndexOfBoundsException错误。

public class Charwork {
    char[] letter;
    int keepInt;
    public Charwork()
    {
        letter = new char[keepInt]; 
    }

    public void copy(String nameToCoppy)
    {
        this.keepInt = nameToCoppy.length();
        System.out.println(this.keepInt);
        for(int x = 0; x < this.keepInt;x++)
        {
            letter[x] = nameToCoppy.charAt(x);
            System.out.println(letter[x]);
        }
    }
}
java arrays char
2个回答
0
投票

您的问题是您的数组是使用null或0的int实例化的。在获取字符串长度后,将构造函数中的一行移动到复制函数应该可以解决问题。

public Charwork()
{

}

public void copy(String nameToCoppy)
{
    this.keepInt = nameToCoppy.length();
    letter = new char[keepInt]; 
    System.out.println(this.keepInt);
    for(int x = 0; x < this.keepInt;x++)
    {
        letter[x] = nameToCoppy.charAt(x);
        System.out.println(letter[x]);
    }
}

0
投票

你创建一个对象Charwork,同时实例化长度为char[] letter的变量keepInt - 但keepInt目前为零,beacuse int是原始的,并且默认为0值。

然后,在copy方法中你改变了keepInt的值,但那是无关紧要的,因为数组char[] letter已经设置为长度为0。

© www.soinside.com 2019 - 2024. All rights reserved.