-3

我有这个方法,每次我尝试将值放入我的foo数组中时,我都会得到 NullPointerException。我试图解决它,但我不知道为什么它告诉我 NullPointerException。感谢您的帮助:)

mine = " 0 2 3 ";

    try {                       
        for(int i = 0; i < mine.length(); i++) {
            String k = "" + mine.charAt(i);
            if(k.equals(" ") == false)
                j++;    
        }
    } catch(Exception r) {
        Toast.makeText(this, "Bad", Toast.LENGTH_SHORT).show();
    }

    try {
        int[] foo = new int[j];

        for(int i = 0; i < mine.length(); i++) {    
            String k = "" + mine.charAt(i);
            if(k.equals(" ") == false) {
                String a = "" + mine.charAt(i); 
                myNum = Integer.parseInt(a);
                foo[i-1] = myNum;
            }
        }
    } catch(Exception df) {
        Toast.makeText(this, "Bad", Toast.LENGTH_SHORT).show();
    }
4

1 回答 1

0
  1. 是什么mine?如果它为空,你会得到一个空指针异常。
  2. 使用有意义的变量名。 j没有意义。
  3. 学习如何比较字符。
  4. 我建议使用 NM 风格的支撑,但这是个人喜好。
  5. 学习如何使用 java 集合。
  6. 学习如何通过索引访问数组。我从 0 开始,0 - 1 超出范围。
  7. 如果您要使用不同步的数组(foo 值与我的值不同的索引),请使用 2 个索引变量(可能是 mineIndex 和 fooIndex)。
  8. 按名称捕获异常。不要只捕获异常。如果您坚持要捕获异常,请考虑添加此评论:“// 我在编程方面很烂”。

选项1

List valueList = new LinkedList();
try
{
  for (int index = 0, index < mine.length(); ++ index)
  {
    final char current = mine.charAt(index);

    if (current != ' ')
    {
      valueList.add(Integer.valueOf(current));
    }
  }
}
catch (NullPointerException exception)
{
  ... do something.
}
catch (NumberFormatExxception exception)
{
  ... do something.
}

选项 2 - 这太糟糕了

int valueCount = 0;
try
{
  for (int index = 0, index < mine.length(); ++ index)
  {
    if (mine.getAt(index) != ' ')
    {
      ++valueCount;
    }
  }
}
catch (NullPointerException exception)
{
  ... do something.
}

if (valueCount > 0)
{
  try
  {
    int[] foo = new int[valueCount];
    int valueIndex = 0;

    for (int index = 0, index < mine.length(); ++ index)
    {
      final char current = mine.charAt(index);

      if (current != ' ')
      {
        foo[valueIndex++] = Integer.valueOf(current));
      }
    }
  }
  catch (NullPointerException exception)
  {
    ... do something.
  }
  catch (NumberFormatExxception exception)
  {
    ... do something.
  }
}
于 2013-05-09T19:56:44.617 回答