我是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());
}
}
答案 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,而不是访问整个数组。