为什么getName()返回null?

问题描述 投票:0回答:3

在Main.java中:

        System.out.println("Enter your name:");
        String name = scan.next();
        name+=scan.nextLine();

        String words[]=name.split("\\s");  
        String capitalizeWord="";  
        for(String w:words){  
            String first=w.substring(0,1);  
            String afterfirst=w.substring(1);  
            capitalizeWord+=first.toUpperCase()+afterfirst+" ";  
        }

        Person p = new Person(capitalizeWord);

In Person.java

    private String name;
    private int age;

    Person(String newName){
        name=newName;
    }

    Person(int newAge){
        age=newAge;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

在List.java中:

        System.out.println("Enter your age:");
        int age = scan.nextInt();

        Person p = new Person(age);
        System.out.println("Thank you for shopping with us, "+p.getName());

最后输出是

Thank you for shopping with us, null

我不知道为什么会这样。我做错什么了吗?我认为代码正确吗?

java string object encapsulation
3个回答
0
投票
在您的最新示例中,您称为接受数字的那个,并且由于没有初始化name成员的操作,因此默认情况下将其初始化为null

p中的Main.javap中的List.java没有关系(它们是两个不同的变量,因此初始化前者将不会对后者产生影响。


0
投票
构造函数称为->Person(int newAge){ age=newAge; } 该构造函数使用默认值来命名名称。.null

0
投票
在您的person.java类中执行此操作
© www.soinside.com 2019 - 2024. All rights reserved.