首页 > 解决方案 > 我的代码没有在测试类中获取 ArrayList 值

问题描述

我正在编写一个代码,它将计算国家的面积,它必须获取所有值(arraylist 中的省区和州区分开),然后将所有内容相加。

这是我的 Country Class 的代码:

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 的输出

我该如何解决这个错误?

标签: javaunit-testingarraylistconstructorinitialization

解决方案


在构造函数的第四行Country,您不初始化参数。this.stateAreasstateAreas

您的Country构造函数应该是:

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

推荐阅读