Java:NullPointerException与子字符串
我的一种方法有问题。请记住,我是在大学里学习Java的,所以我可能无法在简单的事情上跟上速度。下面是一个用于添加表达式的方法。我遇到的问题可以在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
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]实际上被设置为字符串吗?