当我的对象包含数组时,如何覆盖 toString 方法?
How do I override the toString method when my object contains an array?
在我的主要方法中,我需要打印出在一秒钟内创建的两个对象 class。这是我的代码。
public String toString(){
String z = "";
for(int i = 0; i<data.length;i++){
z = z + data[i] + ", ";
}
return z;
}
我有一个 Stat 构造函数,它将数组数据设置为在调用对象中调用的数组。
public Stat(double[] d){
double[] data = new double[d.length];
this.data = data;
这是我初始化数据的方式
int i=1;
private double[] data = new double[i];
这是调用class
public static void main(String[] args){
double[] data = {1.0, 2.0, 3.0};
Stat statA = new Stat(data);
data[0] = 3.0;
data[1] = 4.0;
data[3] = 5.0;
Stat statB = new Stat(data);
System.out.println("statA data= " + statA.toString());
System.out.println("statB data= " + statB.toString());
当我 运行 调试器时,对象包含正确的数据值,但是当我调用 toString 时,它们都打印 {0.0, 0.0, 0.0}
我相信你的
public Stat(double[] d){
double[] data = new double[d.length];
this.data = data;
在您创建输入数组大小 (d.length
) 的新数组时导致问题,因此 class 中的数组不包含数据。你想要这样的东西:
public Stat(double[] d){
this.data = d
}
如果实例成员数据放错了可以用Arrays.toString(statA)
试试
这是你的问题:
public Stat(double[] d){
double[] data = new double[d.length];
this.data = data;
您创建了新的 d.length 大小数组数据数组。
在 Java 中,新分配的内存默认填充为 0,因此这就是为什么您在程序中打印了它。
更改该代码,e.x。:
public Stat(double[] d){
this.data = d;
在我的主要方法中,我需要打印出在一秒钟内创建的两个对象 class。这是我的代码。
public String toString(){
String z = "";
for(int i = 0; i<data.length;i++){
z = z + data[i] + ", ";
}
return z;
}
我有一个 Stat 构造函数,它将数组数据设置为在调用对象中调用的数组。
public Stat(double[] d){
double[] data = new double[d.length];
this.data = data;
这是我初始化数据的方式
int i=1;
private double[] data = new double[i];
这是调用class
public static void main(String[] args){
double[] data = {1.0, 2.0, 3.0};
Stat statA = new Stat(data);
data[0] = 3.0;
data[1] = 4.0;
data[3] = 5.0;
Stat statB = new Stat(data);
System.out.println("statA data= " + statA.toString());
System.out.println("statB data= " + statB.toString());
当我 运行 调试器时,对象包含正确的数据值,但是当我调用 toString 时,它们都打印 {0.0, 0.0, 0.0}
我相信你的
public Stat(double[] d){
double[] data = new double[d.length];
this.data = data;
在您创建输入数组大小 (d.length
) 的新数组时导致问题,因此 class 中的数组不包含数据。你想要这样的东西:
public Stat(double[] d){
this.data = d
}
如果实例成员数据放错了可以用Arrays.toString(statA)
试试
这是你的问题:
public Stat(double[] d){
double[] data = new double[d.length];
this.data = data;
您创建了新的 d.length 大小数组数据数组。 在 Java 中,新分配的内存默认填充为 0,因此这就是为什么您在程序中打印了它。
更改该代码,e.x。:
public Stat(double[] d){
this.data = d;