计算范围内包含的数组价格总和

问题描述 投票:0回答:3

我有以下任务,编写一个方法,获取价格列表并将其相加,仅包括大于 minPrice(含)和小于 maxPrice(含)的价格,然后返回金额。

只能使用for循环。

我返回的结果是错误的。

我认为 if (price >= minPrice && Price <= maxPrice) counter++;

但我不明白为什么。

    public int getPricesSum(int[] prices, int minPrice, int maxPrice) {
        
        if (prices.length == 0) return 0;
        
        int counter = 0;
        
        for(int i = 0; i < prices.length; i++) {
            int price = prices[i];
            if (price >= minPrice && price <= maxPrice) counter++;
        }
        
        int result [] = new int [counter];
        
        int newResult = 0;
        
        for(int i = 0; i < result.length; i++) {
            newResult += prices[i];
        }
        
        return newResult;
        
    }

    public static void main(String[] args) {
        QuadraticEquationSolver shop = new QuadraticEquationSolver();

        //Should be 144 - 20 + 50 + 40 + 34
        int[] prices = new int[] {10, 20, 50, 40, 34, 500};
        System.out.println(shop.getPricesSum(prices, 20, 50));
    }
  }

结果是120。 我想它只计算数组的前四个索引。

java arrays for-loop
3个回答
2
投票

为什么要增加计数器?您刚刚获得了 NUMBER 个正确的元素,但随后您将从第一个 (0) 个元素开始迭代。相反,您可以在第一个 foo 循环中对其进行总结,如下所示:

for(int i = 0; i < prices.length; i++) {
    int price = prices[i];
    if (price >= minPrice && price <= maxPrice) newResult += price;
}

2
投票
public int getPricesSum(int[] prices, int minPrice, int maxPrice) {
    int sum = 0;
    for (int price : prices) {
        if (price >= minPrice && price <= maxPrice) {
            sum += price;
        }
    }
    return sum;
}

1
投票

您的任务是确定给定范围内的价格总和

[minPrice, maxPrice]
。无需计算元素或将元素复制到新数组即可实现您的目标。

您可以将问题分解为三个步骤:

  • 迭代你的元素。
  • 评估当前元素是否包含在范围内。
  • result
    变量中包含的元素求和。
public int getPricesSum(int[] prices, int minPrice, int maxPrice) {
    int newResult = 0;    
    for(int i = 0; i < prices.length; i++) {
        if (prices[i] >= minPrice && prices[i] <= maxPrice){
            newResult += prices[i];
        }
    }
    return newResult;
}

public static void main(String[] args) {
    QuadraticEquationSolver shop = new QuadraticEquationSolver();
    int[] prices = new int[] {10, 20, 50, 40, 34, 500};
    System.out.println(shop.getPricesSum(prices, 20, 50));
}
© www.soinside.com 2019 - 2024. All rights reserved.