我的代码没有在测试类中获取arraylist值

2q5ifsrm  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(324)

我正在写一个代码,它会计算国家的面积,它必须得到所有的值(省面积和州面积在数组中分开列出),然后把所有的值加起来。
这是我的国家班的代码:

import java.util.*;

public class Country implements Stats {
    public String name;
    ArrayList<Integer> provincesAreas = new ArrayList<>();
    ArrayList<Integer> statesAreas;

    public Country(String name, ArrayList<Integer> provincesAreas, ArrayList<Integer> statesAreas) {
        super();
        this.name = name;
        this.provincesAreas = provincesAreas;
        this.statesAreas = new ArrayList<Integer>();
    }

    public double computeArea() {
        double parea=0;
        for (Integer pA: provincesAreas) {
            parea = parea + pA;
        } 
        double sarea=0;
        for (Integer sA: statesAreas) {
            sarea+=sA;  
        }
        return sarea+parea;
    }
}

这是测试类构造函数

Country country = new Country ("Pakistan", new ArrayList<>(List.of(21, 62, 46, 98, 67, 34, 25, 9)), new ArrayList<>(List.of(1,2,3,4,5,6,7,8)));
   System.out.println(country.computeArea());

它给我的输出是362.0,但应该是398.0
如何解决此错误?

iyfjxgzm

iyfjxgzm1#

您的测试类可能还有其他问题,您确定正确使用了“list.of”方法吗?
我在eclipse上出错了。
我试着修复你的代码,在构造器的主体中尝试这个:

import java.util.*;
public class Country {

public String name;
ArrayList<Integer> provincesAreas = new ArrayList<>();
ArrayList<Integer> statesAreas;

public Country(String name, ArrayList<Integer> provincesAreas, ArrayList<Integer> statesAreas) {
    this.name = name;
    this.provincesAreas = provincesAreas;
    this.statesAreas = new ArrayList<Integer>(statesAreas);
}

public double computeArea() {
    double parea=0;
    for (Integer pA: provincesAreas){
        parea = parea + pA;
    } 
    double sarea = 0;
    for (Integer sA: statesAreas){
        sarea+=sA;  
    }
    return sarea+parea;
}
}
fdx2calv

fdx2calv2#

在你的第四行 Country 构造函数,不初始化 this.stateAreasstateAreas 参数。
你的 Country 构造函数应该是:

public Country(String name, ArrayList<Integer> provincesAreas, ArrayList<Integer> statesAreas) {
    super();
    this.name = name;
    this.provincesAreas = provincesAreas;
    this.statesAreas = statesAreas;
}
eanckbw9

eanckbw93#

你不是真的在构造函数中填充数组

this.statesAreas = new ArrayList<Integer>();
3lxsmp7m

3lxsmp7m4#

您没有存储 statesArea 参数,但正在将其初始化为空arraylist。

相关问题