gpt4 book ai didi

java - 无法访问完整数组

转载 作者:行者123 更新时间:2023-12-01 13:50:03 25 4
gpt4 key购买 nike

我有一个方法可以计算特定成员所覆盖的总距离,该方法以 double 组形式返回,如下所示:

public double[] getTotalDistances(){
double[] distance;
distance = new double[3];


for(Activity r: diary ){

if(r instanceof Run){
distance[0] += r.getDistance();
}


}
for(Activity c: diary ){
if(c instanceof Cycle){
distance[1] += c.getDistance();
}
}

for(Activity s: diary ){
if(s instanceof Swim){
distance[2] += s.getDistance();
}
}


return distance;
}

现在对象(成员)存储在另一个名为members的数组中,如下所示:

 public boolean addMember(Member m){
boolean result = false;
for(int i = 0; i < members.length; i++){
if(members[i] == null){


members[i] = m;
result = true;
break;
}
}


return result; //this is returned to have an indication if the member was added successfully or not
}

现在我需要一种方法来打印成员的所有总距离,我已经尝试过:

public void displayDistances() {



for(int i = 0; i < members[i].getTotalDistances().length; i++){
System.out.println(members[i].getTotalDistances()[i]);
}

}

但是,这仅打印第一个成员的第一个元素,然后打印 0,并在其之上给出空指针异常。任何帮助将不胜感激!

最佳答案

这里有几件事。首先,我重构了您的 getTotalDistances() 方法。

public double[] getTotalDistances(){
double[] distance = new double[3];

for(Activity activity: diary) {
if (activity instanceof Run) {
distance[0] += activity.getDistance();
} else if (activity instanceof Cycle) {
distance[1] += activity.getDistance();
} else {
distance[2] += activity.getDistance();
}
}
return distance;
}

然后你的displayDistances()应该改为:

public void displayDistances(){
for(int i = 0; i < members.length; i++){
double total = 0;
double[] distances = members[i].getTotalDistances();
for(int j = 0; j < ditances.length; j++){
total += distances[j];
}
System.out.println(total);
}
}

这将打印每个成员行驶的总距离。祝你好运!

关于java - 无法访问完整数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20036403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com