我在java中遇到char数组问题

时间:2018-01-02 21:18:47

标签: java arrays char

我写了这段代码。我的目标是在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]);
        }
    }
}

2 个答案:

答案 0 :(得分: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]);
    }
}

答案 1 :(得分:0)

您在实例化长度为Charwork的变量char[] letter时创建了一个对象keepInt - 但此时keepInt为零,beacuse int是原始的,并使用默认的0值进行即时化。

然后,在copy方法中,您更改keepInt的值,但这无关紧要,因为数组char[] letter已设置为长度为0.