Java中的强制转换
我想知道在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
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
但是,将这一点融入到语言中会有一个很大的好处:这就是这样的事情