Java中的强制转换

Java中的强制转换,java,arrays,types,casting,Java,Arrays,Types,Casting,我想知道在java中是否有一种将整数数组转换为字符数组的方法。我一直收到一个空指针异常错误 这就是我所拥有的 private char [] clubsArray; // Will hold the clubsString String as an array private char [] heartsArray;// Will hold the heartsString String as an array private char [] spade

我想知道在java中是否有一种将整数数组转换为字符数组的方法。我一直收到一个空指针异常错误

这就是我所拥有的

    private char [] clubsArray; // Will hold the clubsString String as an array 
        private char [] heartsArray;// Will hold the heartsString String as an array
        private char [] spadesArray;// Will hold the spadesString String as an array
        private char [] diamondsArray;// Will hold the diamondsString String as an array
    private int [] intClubsArray; // Holds the character array as number values so I can sort it properly 
        private int [] intHeartsArray; // Holds the character array as number values so I can sort it properly 
        private int [] intSpadesArray; // Holds the character array as number values so I can sort it properly 
        private int [] intDiamondsArray; // Holds the character array as number values so I can sort it properly 


public void cast()
    {
        for (int i = 0; i < clubsArray.length; i++)// A loop that will cast all the clubs into ints 
        {
            intClubsArray[i] = (int) clubsArray[i];
        }
        for (int i = 0; i < heartsArray.length; i++)// A loop that will cast all the hearts into ints 
        {
            intHeartsArray[i] = (int) heartsArray[i];
        }
        for (int i = 0; i < spadesArray.length; i++)// A loop that will cast all the spades into ints 
        {
            intSpadesArray[i] = (int) spadesArray[i];
        }
        for (int i = 0; i < diamondsArray.length; i++)// A loop that will cast all the diamonds into ints 
        {
            intDiamondsArray[i] = (int) diamondsArray[i];
        }
    }
private char[]clubsArray;//将ClubString作为数组保存
私有字符[]heartsArray;//将以数组形式保存heartsString字符串
私有字符[]spadesArray;//将SpadeString字符串作为数组保存
私有字符[]钻石色;//将钻石串字符串作为数组保存
私有int[]intClubsArray;//将字符数组作为数值保存,以便正确排序
Artsarray中的私有int[];//将字符数组作为数值保存,以便正确排序
私有int[]intSpadesArray;//将字符数组作为数值保存,以便正确排序
私有int[]intDiamondsArray;//将字符数组作为数值保存,以便正确排序
公开作废
{
for(int i=0;i

为什么我会犯这个错误??能修好吗??我可以施放整个阵列吗?此外,我不想给变量设置一个特定的大小,因为当它变成int[]时,我会得到不必要的0作为空空格

铸造并不是导致问题的原因。您必须使用new初始化每个数组的大小。代码不会为任何数组分配内存,但对数组调用方法
length
会导致空指针异常

for (int i = 0; i < clubsArray.length; i++)
                 // ^^^^^^^^^^ Not initialized and is a null pointer
                 // But calling method on it is what the exception is saying.

铸造并不是造成问题的原因。您必须使用new初始化每个数组的大小。代码不会为任何数组分配内存,但对数组调用方法
length
会导致空指针异常

for (int i = 0; i < clubsArray.length; i++)
                 // ^^^^^^^^^^ Not initialized and is a null pointer
                 // But calling method on it is what the exception is saying.

clubsArray.length
处的错误吗

如果是这样的话,那是因为你没有做过以下事情:

clubsArray = new char[12];

您也可能无法初始化intClubsArray或任何其他数组)

clubsArray.length的错误吗

如果是这样的话,那是因为你没有做过以下事情:

clubsArray = new char[12];

您也可能无法初始化intClubsArray或任何其他数组)

您是否初始化过int*数组int数组?你曾经流行过你的*数组字符数组吗

看起来其中至少有一个为null,因此在调用*Array.length时会得到一个NPE。发布异常的stacktrace可能会有所帮助

为了澄清我的观点,当你打电话给

clubsArray.length

如果对象(
clubsArray
)为空,您将得到一个
NullPointerException

您是否初始化过int*数组int数组?你曾经流行过你的*数组字符数组吗

看起来其中至少有一个为null,因此在调用*Array.length时会得到一个NPE。发布异常的stacktrace可能会有所帮助

为了澄清我的观点,当你打电话给

clubsArray.length

如果对象(
clubsArray
)为null,您将得到一个
NullPointerException

Java没有任何内置的方法来按您想要的方式强制转换数组。不过,编写一个方法来实现这一点很容易

我猜您的问题是未能初始化数组。Java没有提供任何使用类型系统捕获设置为
null
的值的方法,这意味着要构建可靠的代码,必须在运行时注意
null
。这也是一个烦恼,因为它不必是那样(Spec#)

本着这种精神,为什么不创建一个方法,通过不改变的方式传递空数组,从而优雅地处理空数组呢。(代码未测试)

public int[]castarrayintotochar(char[]toCast){
if(toCast==null)
返回null;
int[]casted=新int[toCast.length];
for(int i=0;i

不过,将其内置到语言中会有一个很大的好处:这是一种可以使用本机代码、矢量化和循环展开进行超级优化的东西。JVM现在相当不错,但是内置的特性可以大大提高速度

Java没有任何内置的方式来按您想要的方式强制转换数组。不过,编写一个方法来实现这一点很容易

我猜您的问题是未能初始化数组。Java没有提供任何使用类型系统捕获设置为
null
的值的方法,这意味着要构建可靠的代码,必须在运行时注意
null
。这也是一个烦恼,因为它不必是那样(Spec#)

本着这种精神,为什么不创建一个方法,通过不改变的方式传递空数组,从而优雅地处理空数组呢。(代码未测试)

public int[]castarrayintotochar(char[]toCast){
if(toCast==null)
返回null;
int[]casted=新int[toCast.length];
for(int i=0;i
但是,将这一点融入到语言中会有一个很大的好处:这就是这样的事情