java - 为什么 getName() 返回 null?
问题描述
编辑:感谢所有的答案!我不知道p
List.java 中的对象与 Main.java 中的对象不同p
。我将它作为参数传递,现在它工作正常。谢谢!
在 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);
在 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 中:
public void printInvoice(){
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
我不知道为什么会这样。我做错什么了吗?我认为代码是正确的?
解决方案
你有两个构造函数。一种接受字符串,一种接受数字。
在您的最新示例中,您调用了接受数字的示例,并且由于没有初始化name
成员,因此它被初始化null
为默认值。
p
in与inMain.java
无关(它们是两个不同的变量),因此初始化前者对后者没有影响。p
List.java