Java:NullPointerException与子字符串

Java:NullPointerException与子字符串,java,exception,Java,Exception,我的一种方法有问题。请记住,我是在大学里学习Java的,所以我可能无法在简单的事情上跟上速度。下面是一个用于添加表达式的方法。我遇到的问题可以在x=x.substring.(1,x.length()-1)中找到我收到一个异常,内容如下: Exception in thread "main" java.lang.NullPointerException 我不知道这意味着什么和/或如何修复它。如果你能给我指出正确的方向,那就太好了。 谢谢 public static int adder(Strin

我的一种方法有问题。请记住,我是在大学里学习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;

}
公共静态整数加法器(字符串x){
int-total=0;
x=x.substring(1,x.length()-1);
sopln(x);
字符串[]nums=x.split(\\+);
对于(int i=0;i
我遇到的问题可以在
x=x.substring.(1,x.length()-1)中找到

这意味着在某个点上,您正在使用
null
参数调用
adder
。这是在那一点上获得NPE的唯一方法

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


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

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

您如何调用该方法

当你用一个硬编码字符串调用它时会发生这种情况吗

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

如果不是,那么在代码上游的某个地方,传递给加法器方法的字符串变量为空。

调用加法器(字符串)时传递的是空值,其中字符串为空。

错误消息将给您一个行号。去那条线。看看那个密码。想想为什么这个变量是空的。因为错误发生在
x=x.substring。(1,x.length()-1)
它应该是
x
,即
null
x
作为参数传递,那么如何调用
adder
??如果用null或adder(“”)调用adder,它将在该行抛出错误。我认为如果
字符串
等于“”,这将是一个问题,因为子字符串从1开始,一直到.length()-1,当你遇到这个异常时,x的值是多少?我不知道如何格式化我的注释,但是:我在for循环中调用加法器,我说,“int total=adder(string[I])。你确定string[I]实际上被设置为字符串吗?