Java从方法返回空值

Java从方法返回空值,java,Java,对于Elf 1,我一直有一个对象显示为null,它应该显示最好的朋友:霍比特人2,但它只显示null。我试图寻找解决办法,但没有任何帮助。有人能帮我想出一个解决办法吗?多谢各位 示例输出: ELF 1[状态:活精灵][氏族:森林|好友:空][STR:5 | DEX:7 |手臂:1 | MOX:16][硬币:77 |健康:80] ELF 2[状态:活精灵][氏族:城市|最好的朋友:霍比特人1][STR:14 | DEX:20 |手臂:18 | MOX:12][硬币:1000 |健康:80] 主类

对于
Elf 1
,我一直有一个对象显示为
null
,它应该显示
最好的朋友:霍比特人2
,但它只显示
null
。我试图寻找解决办法,但没有任何帮助。有人能帮我想出一个解决办法吗?多谢各位

示例输出:

ELF 1[状态:活精灵][氏族:森林|好友:空][STR:5 | DEX:7 |手臂:1 | MOX:16][硬币:77 |健康:80]

ELF 2[状态:活精灵][氏族:城市|最好的朋友:霍比特人1][STR:14 | DEX:20 |手臂:18 | MOX:12][硬币:1000 |健康:80]

主类

        // HOBBIT 1 AND 2
        System.out.println("\nLet's create new two Hobbits!");
        System.out.println("Building two new hobbits...");
        System.out.println("\nHobbit 1 name: ");
        String hobbitName = sc.nextLine();
        Hobbit hobbit1 = new Hobbit(hobbitName);

        System.out.println("Hobbit 2 name: ");
        String hobbitName2 = sc.nextLine();
        Hobbit hobbit2 = new Hobbit(hobbitName2, 8, 12, 2, 14, 10, 30);
        System.out.println("\n" + hobbit1);
        System.out.println(hobbit2);

        // ELF 1 AND 2
        System.out.println("\nLet's create new two Elves!");
        System.out.println("Building two new Elves...");
        System.out.println("\nElf 1 name: ");
        String elfName1 = sc.nextLine();
        Elf elf1 = new Elf(elfName1);

        System.out.println("Elf 2 name: ");
        String elfName2 = sc.nextLine();
        Elf elf2 = new Elf(elfName2, 14, 20, 18, 12, 1000, 80, "Forest", hobbit1);
        System.out.println("\n" + elf1);
        System.out.println(elf2);
elf类中的代码


public class Elf extends Humanoid {

    private final String clan;    
    private String bestFriend;   

    public Elf(String name) {
        super(name);

        // randomly sets clan
        Random random = new Random();
        if(random.nextBoolean()){
            clan = "Forest";
        } else {
            clan = "City";
        }
    }

    public Elf(String name, String clan, Hobbit bestFriend) {
        super(name);
        this.clan = clan;
        this.bestFriend = bestFriend.getName();
    }

    public Elf(String name, int strength, int dexterity, int armour, int moxie, int coins, int healthRating, String clan, Hobbit bestFriend) {
        super(name, strength, dexterity, armour, moxie, coins, healthRating);
        this.clan = clan;
        this.bestFriend = bestFriend.getName();
    }

    public String getBestFriend() {
        return this.bestFriend;
    }

    public void setBestFriend(Hobbit bestFriend) {
        this.bestFriend = bestFriend.getName();
    }

    public String getClan() {
        return clan;
    }
    // only for elf 2 line
    @Override
    public String toString() {
        return getName() +
                " [ STATUS: " + super.isAlive() +
                " Elf ] [ CLAN: " + clan +
                " | BEST FRIEND: " + getBestFriend() +
                " ]" + super.toString();
    }
}```

您正在调用构造函数
Elf(String)
来创建elf1;这个构造函数设置了氏族和名称,仅此而已。没有设置“best friend”,因此它保持为空。

您正在编写或修改“Elf”类吗?您需要向该单参数构造函数添加另一个构造函数参数,以便像其他构造函数一样传递最佳朋友,然后在构造函数中添加一行代码以实际设置成员变量。请不要像您那样删除问题的内容。请回复更改,以便@ErnestFriedman Hill的答案不会被忽略。甚至不要考虑删除这个问题,因为它可能会帮助其他人。