我是编程的初学者,并决定制作我自己的二进制到十进制转换器程序,以获得它的乐趣。在我的程序中,我将String数组的内容移动到Int数组。问题是我似乎在我将String更改为Int的代码中遇到NullPointerException
错误。我已经阅读了错误并尝试了许多不同的方法来摆脱这个错误,但没有任何帮助。我能做错什么?
"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"
我的代码:
int ans = 0;
int multi = 0;
strArray = null;
intArray = null;
if (rbBin.isSelected()) {
txaNew.setText("");
String num = ftxfOld.getText();
strArray = num.replaceAll("\\[", "").replaceAll("\\]", "").split(",");
for (int i = 0; i < strArray.length; i++) {
try {
intArray[i] = Integer.parseInt(strArray[i]); //I GET THE ERROR HERE
} catch (NumberFormatException nfe) {
}
}
for (int j = 0; j < num.length() + 1; j++) {
multi = intArray[j] * 2 ^ j;
ans = ans + multi;
}
}
txaNew.append(Integer.toString(ans));
答案 0 :(得分:3)
这是因为在java中你必须在使用它之前初始化变量。 如果你这样做的话:
intArray[i] = Integer.parseInt(strArray[i]); //I GET THE ERROR HERE
initArray
为空。
更改您的代码:
strArray = num.replaceAll("\\[", "").replaceAll("\\]", "").split(",");
if (strArray != null){
//You have to initialize your variable
intArray = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
try {
intArray[i] = Integer.parseInt(strArray[i]);
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
};
}
}
答案 1 :(得分:2)
您必须首先实例化intArray。
intArray = new int[strArray.length];
所以你会:
String num = ftxfOld.getText();
strArray = num.replaceAll("\\[", "").replaceAll("\\]", "").split(",");
intArray = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
try {
intArray[i] = Integer.parseInt(strArray[i]); //I GET THE ERROR HERE
} catch (NumberFormatException nfe) {};
}