[英]numbers from string to char array to int array
我有一个字符串输入,我试图将其转换为字符数组,然后以一种可以让我在信用卡程序中使用它们的方式存储该数组中的数字。 这就是我目前正在尝试这样做的方式。
我目前在处收到Null Pointer Exception:
charDigits[x - invalid] = charInput[x];
我需要能够从字符串输入中使用信用卡算法上的整数。
public class testFunction {
private char[] charInput;
private char[] charDigits;
private int[] intInput;
private int invalid = 0;
private String input = "125-6543-3356";
public testFunction()
{
charInput = input.toCharArray();
for(int x = 0; x < charInput.length; x++)
{
if (charInput[x] == '0' || charInput[x] == '1' || charInput[x] == '2' || charInput[x] == '3' || charInput[x] == '9' ||
charInput[x] == '4' || charInput[x] == '5' || charInput[x] == '6' || charInput[x] == '7' || charInput[x] == '8')
{
charDigits[x - invalid] = charInput[x];
}
else
{
invalid++;
}
System.out.println("charDigits: " + x + ": " + charDigits[x] );
}
for(int i = 0; i < charDigits.length; i++)
{
intInput[i] = Integer.parseInt(charDigits[i] + "");
}
}
public static void main(String[] args)
{
testFunction test = new testFunction();
}
}
我看不到您在任何地方初始化charDigits
。 它的初始值为null
,因此像charDigits[i]
一样访问它会产生一个NPE(您应该可以根据NullPointerException
的文档轻松推断出它)。 您需要charDigits
初始化为任何大小的数组(看起来最大大小将为charInput.length
):
charDigits = new char[charInput.length];
但是,为了使逻辑的其余部分正常工作,您还需要跟踪charDigits
中实际有效的位数(因为最终它可以比charInput
短)。 您有很多选择:
valid++
,而不是否定情况下使用invalid++
,并通过charDigits[valid]
而不是[x - invalid]
索引。 在循环的最后, valid
将包含复制到charDigits
的字符数,并且可以相应地初始化intInput
。 charDigits
的元素将被初始化为0
, intInput
当charDigits[i] == 0
时,请停止复制到intInput
。 charDigits
使用动态数组(例如ArrayList<Character>
)并根据需要追加。 StringBuilder
或其他东西代替charDigits
,并根据需要追加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.