将String数组转换为Int数组时出现NullPointerException

时间:2015-05-09 15:34:35

标签: java arrays

我是编程的初学者,并决定制作我自己的二进制到十进制转换器程序,以获得它的乐趣。在我的程序中,我将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));

2 个答案:

答案 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) {}; 
}