substring()在Java中生成错误

use*_*946 -3 java string substring

我在使用这个substring()时遇到错误.我试图得到第一个,中间和最后的首字母,然后转换为大写.

public String initials() {
    String initials = first.substring(0, 1) + middle.substring(0, 1) 
            + last.substring(0, 1);
    return initials.toUpperCase();
}
Run Code Online (Sandbox Code Playgroud)

那是代码,这是它给我的输出..

Exception in thread "main" java.lang.NullPointerException
null, null null at name.Name.initials(Name.java:75)
   at name.NameDriver.main(NameDriver.java:30)
   Java Result: 1
Run Code Online (Sandbox Code Playgroud)

第75行是

String initials = first.substring(0, 1) + middle.substring(0, 1) 
Run Code Online (Sandbox Code Playgroud)

NameDriver中的第30行是

System.out.print(name1.initials());
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 5

这个错误是无关的substring方法,似乎是因为first,middlelast为空,只能在一个串上执行此方法.

阻止此错误发生的最简单方法是在initials方法的开头添加类似的内容:

if(first == null || middle == null || last == null) return "Not all names have been entered";

但是,您可能还需要考虑并非每个人都有中间名.