gpt4 book ai didi

java - 以两个 ArrayLists 作为参数的方法

转载 作者:行者123 更新时间:2023-11-29 05:12:02 25 4
gpt4 key购买 nike

我正在完成一个练习,要求我编写一个名为 totalTax 的方法,该方法将两个 ArrayList 作为参数,一个包含房屋,另一个包含商店,并返回所有这些属性的总应付税款。 Shop 和 House 是我程序中的两个类。每个都有一个将税作为整数返回的方法。

我的解决方案如下,但由于重复,我不确定这是最有效的方法,而且它无法编译!有没有一种方法可以实现相同的目的,但又要避免像我下面这样的重复代码?

private int totalTax(ArrayList<Shop> list1, ArrayList<House> list2) {

int total;

for (int a =0; a <= list1.size() -1; a++) {

total += list1.shopTax();

}

for (int a = 0; a<= list2.size() -1; a++) {

total += list2.houseTax();

}

return total;
}

最佳答案

您的解决方案将不起作用,因为您必须访问 List 中的元素,您正在直接从列表中检索 tax,如下所示:

total += list1.shopTax();

应该是

total += list1.get(a).shopTax();

类似这里:

total += list2.houseTax();

应该是:

total += list2.get(a).houseTax();

不过,这种方法是使用您的 ArrayList 作为数组的包装器。另一种选择是将 ArrayList 视为 List,因此您将使用 Iterator 而不是通过 get 访问元素> 方法。 Iterator有两种使用方式:

  1. 声明 Iterator 并使用 List#iterator 初始化它:

    Iterator<Shop> shopIterator = list1.iterator();
    while (shopIterator.hasNext()) {
    Shop shop = shopIterator.next();
    total += shop.shopTax();
    }
    Iterator<House> houseIterator = list2.iterator();
    while (houseIterator.hasNext()) {
    House house = houseIterator.next();
    total += house.shopTax();
    }
  2. 使用增强的 for 循环:

    for (Shop shop : list1) {
    total += shop.shopTax();
    }
    for (House house : list2) {
    total += house.houseTax();
    }

关于java - 以两个 ArrayLists 作为参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094853/

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