设置并获取双打数组

时间:2017-04-23 20:28:22

标签: java arrays

我是Java的新手,对于获取设置数组感到困惑。只是超级基本代码我想更新学生班的成绩数组。我使用double []输入数组setGrades,但是当我调用getGrades时它会返回垃圾:[D@610455d6

我知道这很容易让我失踪

public class Student
{
    private double[] grades;

    public void setGrades(double[] grades)
    {
        this.grades = grades;
    }

    public double[] getGrades()
    {
        return grades;
    }

    public static void main(String[] args)
    {
        double[] input = {87.54, 67.45};
        Student ted = new Student();
        ted.setGrades(input);
        System.out.println(ted.getGrades());
    }
}

4 个答案:

答案 0 :(得分:3)

要打印数组的值,您必须循环抛出数组并按值打印值,但有更好的方法,而不是:

System.out.println(ted.getGrades());

你必须像这样使用Arrays.toString(array)

System.out.println(Arrays.toString(ted.getGrades()));

答案 1 :(得分:0)

因为你返回一个数组。

getGrades()[0] 

获取数组中的第一个元素

答案 2 :(得分:0)

用Java打印数组会返回其哈希码,这就是[D@610455d6。您需要指定索引in getGrades()或使用Arrays.toString(ted.getGrades())将数组转换为可打印格式。

答案 3 :(得分:0)

Java中的对象覆盖一个名为toString()的函数,该函数返回在类中定义的对象的任何String表示形式,并且在将对象的实例传递给打印时隐式调用toString()方法。原始数组不返回非常有用的字符串表示 - 只是在散列对象以便放置在(例如)HashMap中时使用的hashCode。但是,Arrays实用程序类包含一个更有用的toString()函数,您必须显式调用该函数,并将该数组作为参数传递。

Arrays.toString(ted.getGrades());

我建议如何访问grade数组的各个元素而不返回它。在没有控制的情况下留下访问内部对象数据的方法通常是个坏主意。如果您保存对它的引用,您可以决定在程序中的其他位置破坏内部数组。一种可能性是将grades数组传递给对象构造函数,并让该构造函数执行该数组的完整副本。然后,为各个数组索引访问设置一个getter和setter,而不是访问整个数组。