Java 添加到数组的值是否为空?
在我下面的代码中,我遇到了一个无法解决的问题。。。当我将一个class Person对象添加到数组中时,它看起来很好,但是当我试图从指定的数组位置打印出该对象值时,它会输出“null” 这是密码Java 添加到数组的值是否为空?,java,arrays,Java,Arrays,在我下面的代码中,我遇到了一个无法解决的问题。。。当我将一个class Person对象添加到数组中时,它看起来很好,但是当我试图从指定的数组位置打印出该对象值时,它会输出“null” 这是密码 import java.util.Scanner; import java.util.Arrays; import java.lang.String; public class Main { public static void main(String[] args) {
import java.util.Scanner;
import java.util.Arrays;
import java.lang.String;
public class Main
{
public static void main(String[] args)
{
int ARRAY_LENGTH = 2;
Scanner in = new Scanner(System.in);
Person[] Persons;
Persons = new Person[ARRAY_LENGTH];
for (int i = 0; i < ARRAY_LENGTH; i++)
{
System.out.println("Enter a name to add to the array: ");
Persons[i] = new Person(in.next());
System.out.println(Persons[i]);
}
Arrays.sort(Persons);
for (int i = 0; i < ARRAY_LENGTH; i++)
{
System.out.println(Persons[i]);
}
}
}
import java.util.Scanner;
导入java.util.array;
导入java.lang.String;
公共班机
{
公共静态void main(字符串[]args)
{
int数组_长度=2;
扫描仪输入=新扫描仪(系统输入);
人[]人;
人员=新人员[数组长度];
for(int i=0;i
&
公共类人员实现可比较
{
私有字符串名称;
公众人物(字符串名称)
{
字符串名称=aName;
}
公共字符串getName()
{
返回名称;
}
公共内部比较(o人)
{
其他人=(人)o;
if(this.name.equals(o.name))
{
返回0;
}
if(this.name.compareTo(o.name)<0)
{
返回-1;
}
返回1;
}
@凌驾
公共字符串toString()
{
返回名称;
}
}
不,它没有将null
添加到数组中。它在数组中放置了一个对Person
对象的引用,当您在该Person
对象上调用toString()
时,它将返回name
字段的值。。。由于此构造函数的原因,它总是null
:
public Person (String aName)
{
String name = aName;
}
这不是给name
字段赋值,而是声明一个名为name
的局部变量。(我希望一个像样的IDE会就此发出警告。)
你想要:
public Person (String aName)
{
name = aName;
}
不,它没有将
null
添加到数组中。它在数组中放置了一个对Person
对象的引用,当您在该Person
对象上调用toString()
时,它将返回name
字段的值。。。由于此构造函数的原因,它总是null
:
public Person (String aName)
{
String name = aName;
}
这不是给name
字段赋值,而是声明一个名为name
的局部变量。(我希望一个像样的IDE会就此发出警告。)
你想要:
public Person (String aName)
{
name = aName;
}
构造器
public Person (String aName)
{
String name = aName;
}
将名称存储在局部变量中
将此更改为
public Person (String aName)
{
this.name = aName;
}
构造器
public Person (String aName)
{
String name = aName;
}
将名称存储在局部变量中
将此更改为
public Person (String aName)
{
this.name = aName;
}
构造函数是错误的
public Person (String aName)
{
String name = aName;
}
它正在创建一个新变量,而不是正确分配字段
尝试删除类型声明:
public Person (String aName)
{
name = aName;
}
构造函数是错误的
public Person (String aName)
{
String name = aName;
}
它正在创建一个新变量,而不是正确分配字段
尝试删除类型声明:
public Person (String aName)
{
name = aName;
}
您的
Person
构造函数没有为字段name
赋值-它声明了一个名为name
的局部变量。这就是问题所在。您还应该考虑只需编写<代码> Cuto to 方法返回<代码> No.Cuto to(O.NEDY);<代码>-这是一种简单得多的方法。您的Person
构造函数不为字段name
赋值-它声明一个名为name
的局部变量。这就是问题所在。您还应该考虑只需编写<代码> Cuto to 方法返回<代码> No.Cuto to(O.NEDY);<代码>-这是一种简单得多的方法。这一更改(在name=aName之前删除“String”声明)起到了作用。另外,我使用BlueJ作为我的IDE。您建议我花时间学习Java的IDE是什么?这一更改(在name=aName之前删除'String'声明就成功了。另外,我正在使用BlueJ作为我的IDE。您建议我花时间学习Java的IDE是什么?