数组打印空值-Java

数组打印空值-Java,java,arrays,Java,Arrays,因此,我创建了一个name类,并使用一个数组存储名字和姓氏,使用split函数分隔。编辑:对不起,这是更大项目的一部分,复制所有代码是没有意义的。我有一个Person类,它由Name类组成。person类使用下面的getStatement,并使用println将其打印出来 public Name(String name){ String [] nameArr = name.split(" "); for (int i = 0; i < nameArr.length; i++

因此,我创建了一个name类,并使用一个数组存储名字和姓氏,使用split函数分隔。编辑:对不起,这是更大项目的一部分,复制所有代码是没有意义的。我有一个Person类,它由Name类组成。person类使用下面的getStatement,并使用println将其打印出来

public Name(String name){
    String [] nameArr = name.split(" ");
    for (int i = 0; i < nameArr.length; i++){
        if (i == 0)
            firstName = nameArr[i];
        else{
            if(nameArr[i] != null){
                lastName += nameArr[i];
            }                    
        }
    }
}

public String getName(){
        return (name.getLast() + " " +  name.getFirst());
    }
一个叫乔·什莫的人出来找纳尔肖姆·乔。。。我不明白为什么=[

只需在循环前面将lastName属性初始化为空字符串:

lastName = "";
for (int i = 0; i < nameArr.length; i++){ 
    ...

另一个一般提示:当通过循环中的串联来构建字符串时,通常最好使用a来避免。

当您附加一个为null的字符串时,该字符串中会出现null

String a = null;
a += " hello"; // a = "null hello";
在您的例子中,您有一个lastName,它是null,但现在在null之后添加了一个名称

查看正在发生的事情的最佳方法是在IDE中逐步完成调试器中的代码。这将向您显示每一行的功能

你想要的是

String[] nameArr = name.split(" ", 2); // 1 or 2 elements.
firstName = nameArr[0]; // always at least one element.
lastName = nameArr.length > 1 ? nameArr[1] : "";

你发布的代码中没有单行打印任何内容。那么我们怎么知道你为什么会得到输出?我们也不知道输入。请上传该类的完整代码,以便我们可以帮助你。啊,我明白了,但是我读的文件中的一些名字有多个姓氏谢谢朋友,非常感谢。相关:哇,beautiful回答感谢链接…或者如果您想构建带有分隔符的字符串,如空格、逗号或其他标记之间的分隔符,因为Java 8,我们也可以使用StringJoiner。
String[] nameArr = name.split(" ", 2); // 1 or 2 elements.
firstName = nameArr[0]; // always at least one element.
lastName = nameArr.length > 1 ? nameArr[1] : "";