递增数组和长度

时间:2019-03-23 21:55:33

标签: java arrays

我正在设置购物程序。下面的代码是一种方法。该代码包括建立商店和实际使用商店。在这种方法中,我试图根据用户购买的商品数来确定用户获得的折扣。

当用户开设商店时,他们可以设置x项商品以获得折扣。

例如,如果用户购买20件商品,并且有资格获得折扣的商品数量x设置为6件装。用户将从原始价格中减去(2 *商品价格)折扣。

每6包,用户免费获得1包,最多20包。

6包+ 1包免费+另外6包+ 1包免费+ 6包= 20包。

我尝试创建循环,例如在模数为0时减去用户想要购买的商品数量,同时对价值进行计数,并从用户购买的数量中减去商品,但是我却无法与之接近。

阵列是通过其他方法带来的:

price[i]是商品的价格 buyItems[i]是用户购买的商品数量 packs[i]是用户选择的折扣,例如,用户可以设置折扣 折扣适用于2件装,3件装,甚至没有。

public static void checkOuts(String [] names, double [] price,double [] packs,double addDiscount[], double[] buyItems, double[]addDiscountrate, int k ){

    double orgSub=0;
    double newSub=0;
    double addPercent=0;
    double specDis =0;
    double freePack=0;
    double disCheck =0;
    double count=0;

    for (int i =0; i < k; i++ ) {
        orgSub+=price[i]*buyItems[i];
    }

    System.out.println("Original Subtotal:             $" + orgSub);

for (int i =0; i < k; i++ ) {
    orgSub+=price[i]*buyItems[i];
}

System.out.println("Original Subtotal:             $" + orgSub);

for (int j = 0; j < buyItems.length; j++) {
    disCheck = buyItems[j];

    for(int d =0; d < buyItems.length; d++) {
        freePack = packs[d];

        for (int s =1; s < disCheck; s++)
            if (s % freePack==0) {
                count++;
                disCheck = disCheck -1;
                System.out.println(disCheck);
            }

    }
    specDis+= count*price[j];
    // the final discount that will be subtracted from original
}

2 个答案:

答案 0 :(得分:0)

为什么所有这些数组?他们不是一个数量吗? (我可能会误会)

如果您将其更改为整数,则可以免费获得

count = Math.floor(buyItems/packs);

答案 1 :(得分:0)

我的代码版本(我删除了从未解释过的内容):

public static void checkOuts(String[] names, double[] price, int[] packs, int[] buyItems) {

        System.out.println("Name\tnumFree\ttotalNum\tTotalPrice");
        for (int i = 0; i < names.length; i++) {
            int numFree = buyItems[i] / (packs[i] + 1);
            double totalPrice = (buyItems[i] - numFree) * price[i];
            System.out.println(names[i] + "\t" + numFree + "\t" + buyItems[i] + "\t\t" + totalPrice);
        }

    }

使用以下代码调用时:

String[] names = {"Coke", "Pepsi"};
double[] price = {1, 1};
int[] packs = {3, 4};
int[] buyItems = {10, 20};

checkOuts(names, price, packs, buyItems);

您将获得以下输出:(与您的评论一致)

Name    numFree totalNum TotalPrice
Coke    2       10       8.0
Pepsi   4       20       16.0

您可能还想研究使您的代码面向对象。与其传递并行数组,不如传递单个项目或订单的数组,这将更容易,它们将具有名称,价格,折扣和您需要的其他任何字段。