3

我的一种方法有问题。请记住,我在大学里学习 Java,所以我可能跟不上简单的事情。下面是一种用于添加表达式的方法。我遇到的问题是在x = x.substring.(1, x.length() - 1);我得到一个异常的地方发现的:

Exception in thread "main" java.lang.NullPointerException

我不知道这意味着什么和/或如何解决它。如果你能指出我正确的方向,那就太好了。谢谢。

public static int adder(String x){
    int total = 0;
    x = x.substring(1, x.length() - 1);
    sopln(x);
    String[] nums = x.split("\\+");
    for(int i = 0; i < nums.length; ++i){
        if(nums[i].charAt(0) == ' ' || nums[i].charAt(nums[i].length()-1) == ' '){
            sopln("ERROR: Excess whitespace identified.");
            nums[i] = nums[i].trim();
        }
        nums[i] = nums[i].replaceAll(" ", "");
        if(nums[i].charAt(0) == '-')
            total -= Integer.parseInt(nums[i]);

        else
            total += Integer.parseInt(nums[i]);
    }
    return total;

}
4

3 回答 3

0

我遇到的问题在哪里找到x=x.substring.(1,x.length() - 1);

这意味着在某些时候您adder使用的参数是null. 这是您在那时获得 NPE 的唯一方法。

找出参数为空的位置和原因,然后修复它。

(它可能是一个显式的null,但它更有可能来自一个未初始化的字段,或者来自某个返回 anull以指示某事的方法;例如,当读者到达 EOF 位置时BufferedReader.readLine()返回。)null

于 2013-09-22T21:37:36.593 回答
0

这可能意味着您的字符串 x 为空,并且实际上并未设置为字符串的对象。

您如何调用该方法?

当您使用硬编码字符串调用它时是否会发生这种情况

int num = adder("string checking in");

如果不是,那么在您的代码上游某处,您传递给 adder 方法的 String 变量为空。

于 2013-09-22T21:38:47.080 回答
0

您在调用 adder(the_string) 时传递了一个空值,其中 the_string 为空

于 2013-09-22T21:40:20.807 回答