我在java中遇到char数组问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在java中遇到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]);
        }
    }
}
答案

您的问题是您的数组是使用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]);
    }
}
另一答案

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

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

以上是关于我在java中遇到char数组问题的主要内容,如果未能解决你的问题,请参考以下文章

我在制作一串字符数组以在 Unity 引擎中打印到屏幕时遇到问题

片段中ListView的setOnItemClickListener

是否可以在 C 中将 char[] 转换为 char*?

java.lang.IllegalStateException:片段未附加到活动

为啥在片段中从 char* 转换为 std::string 比转换为 const char* 更可取?

分配字符串数组