Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加到数组的值是否为空?_Java_Arrays - Fatal编程技术网

Java 添加到数组的值是否为空?

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) {

在我下面的代码中,我遇到了一个无法解决的问题。。。当我将一个class Person对象添加到数组中时,它看起来很好,但是当我试图从指定的数组位置打印出该对象值时,它会输出“null”

这是密码

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是什么?