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

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

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

  1. import java.util.*;
  2. public class Country implements Stats {
  3. public String name;
  4. ArrayList<Integer> provincesAreas = new ArrayList<>();
  5. ArrayList<Integer> statesAreas;
  6. public Country(String name, ArrayList<Integer> provincesAreas, ArrayList<Integer> statesAreas) {
  7. super();
  8. this.name = name;
  9. this.provincesAreas = provincesAreas;
  10. this.statesAreas = new ArrayList<Integer>();
  11. }
  12. public double computeArea() {
  13. double parea=0;
  14. for (Integer pA: provincesAreas) {
  15. parea = parea + pA;
  16. }
  17. double sarea=0;
  18. for (Integer sA: statesAreas) {
  19. sarea+=sA;
  20. }
  21. return sarea+parea;
  22. }
  23. }

这是测试类构造函数

  1. 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)));
  2. System.out.println(country.computeArea());

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

iyfjxgzm

iyfjxgzm1#

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

  1. import java.util.*;
  2. public class Country {
  3. public String name;
  4. ArrayList<Integer> provincesAreas = new ArrayList<>();
  5. ArrayList<Integer> statesAreas;
  6. public Country(String name, ArrayList<Integer> provincesAreas, ArrayList<Integer> statesAreas) {
  7. this.name = name;
  8. this.provincesAreas = provincesAreas;
  9. this.statesAreas = new ArrayList<Integer>(statesAreas);
  10. }
  11. public double computeArea() {
  12. double parea=0;
  13. for (Integer pA: provincesAreas){
  14. parea = parea + pA;
  15. }
  16. double sarea = 0;
  17. for (Integer sA: statesAreas){
  18. sarea+=sA;
  19. }
  20. return sarea+parea;
  21. }
  22. }
展开查看全部
fdx2calv

fdx2calv2#

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

  1. public Country(String name, ArrayList<Integer> provincesAreas, ArrayList<Integer> statesAreas) {
  2. super();
  3. this.name = name;
  4. this.provincesAreas = provincesAreas;
  5. this.statesAreas = statesAreas;
  6. }
eanckbw9

eanckbw93#

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

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

3lxsmp7m4#

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

相关问题