销售总数与销售额不对应,运行结果为2400.0 。但结果应为2500


public class Computer implements ComputeSales {
    public double Sales() {
        return 200;
    }

}


public interface ComputeSales {
    double Sales();

}


public class M {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ComputeSales[]goods=new ComputeSales[20];
        int temp;
        int total;
        total=(int)(Math.random()*21);
        for(int i=0;i<total;i++)
        {temp=(int)(Math.random()*3);
        if(temp==0) {
            goods[i]=new Televsion();
            System.out.println("商店销售出一台电视机为100元");
            
        }
        else if(temp==1)
        {
            goods[i]=new Computer();
            System.out.println("商店销售出一台电脑为200元");
        }
        else if(temp==2)
        {
            goods[i]=new Mobile();
            System.out.println("商店销售出一部手机为300元");
        }
        }
        Shop shop=new Shop(goods);
        System.out.println("今天商店销售电器总数为:"+total);
        System.out.println("今天商店销售额:"+shop.giveTotalSales(total));
        

    }

}


public class Shop {
    ComputeSales[]goods;
    double totalSales=0;
    Shop(ComputeSales[]goods){
        this.goods=goods;
    }
    public  double giveTotalSales(int n) {
        totalSales=0;
        for(int i=0;i<n-1;i++)
        //for(n=0;n<20;n++)
        {
            totalSales=totalSales+goods[i].Sales();
        }
        
        
        return totalSales;
    }

}

public class Televsion implements ComputeSales {
    public double Sales() {
        return 100;
    }

}



运行结果:
商店销售出一台电脑为200元
商店销售出一部手机为300元
商店销售出一台电脑为200元
商店销售出一部手机为300元
商店销售出一台电视机为100元
商店销售出一台电脑为200元
商店销售出一部手机为300元
商店销售出一部手机为300元
商店销售出一台电脑为200元
商店销售出一台电视机为100元
商店销售出一台电脑为200元
商店销售出一台电视机为100元

今天商店销售电器总数为:12
今天商店销售额:2400.0
但结果应为2500

shop类中计算销售额时为什么使用i ‹ n–1呢。使用i ‹ n或者i ‹ goods.length

看你的例题 总数total=12 然后你计算销售额为 i<n-1 其实就是 i<11 所以实际上他计算的只有 11个产品 将 i<n-1 改成i<n 或者i<=n-1即可