生日钱计算器

时间:2019-09-16 13:07:46

标签: java

我的任务是创建一个计算器,可以计算购买物品后礼品卡上还剩多少,但还要确保不要超过6件或225美元,以先到者为准。我知道我需要另一种方法来进行计算,但是我不确定要输入什么。这是我到目前为止的内容:

我知道我将需要一个for循环来用于商品的计数器,但是我真的很受困扰。我发布了实际作业以提供背景信息。

  

在您的生日那天,您的有钱阿姨和叔叔会给您一张225美元的礼品卡,   当地的购物中心。他们将与您一起购物,并帮助进行   您的物品。你们每个人最多只能携带一件   手。因此,您最多可以购买六件物品。您将有一个   跟踪器设备,它还可以计算您购买的商品数量   作为您已花费的金额。选择每个项目后,   跟踪器提示您输入价格,然后显示   您花的钱。然后显示您可能要订购的商品数量   仍然选择和礼品卡上的余额。该程序不会   终止直到您获得6件商品或$ 225,以先到者为准。的   然后跟踪器将列出总支出以及商品数量   作为礼品卡上的余额。

     

必填:

     
      
  • 验证否定   价格未输入,您的支出不能超过余额   在礼品卡上。给用户尽可能多的机会   输入高于0或低于225的价格。用户应该可以购买   价格在1便士至225美元(含)之间的物品。
  •   
  • 所有美元   金额应使用NumberFormat类设置为货币格式。
  •   
  • 在程序中至少包含一种方法。
  •   
     

请确保为所有选项创建测试用例:

     
      
  • 将全部金额花在少于6个项目上
  •   
  • 购买6件商品,总金额少于全部金额
  •   
  • 将全部金额花在正好6个项目上
  •   
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    double priceItem = 0, totalPrice = 225, currentPrice = 0;
    int numItem;

    System.out.println("Happy birthday from Auntie and Uncle! \nYou may purchase up to"
            + " 6 items with this gift card of $225.");

    for (numItem = 1; numItem <= 6; numItem++) {
        System.out.println("Enter the price for item #" + numItem + ": ");

        priceItem = input.nextDouble();

        while (numItem <= 6 && totalPrice <= 225) {

            totalPrice = currentPrice - priceItem;
            System.out.println("You may buy this item. You have spent ");

            if (currentPrice > totalPrice) {
                System.out.println("Item is too expensive. Balance on gift card is " + currentPrice);
            }
        }
    }
}

每当我尝试进行while循环时,这都是一个无限循环,而且我不确定要插入哪个计算来使其中断。

3 个答案:

答案 0 :(得分:1)

我不想给您答案,因为这是您应该解决的问题,但我会给出一些指示。

  1. 您在此处使用while循环是不正确的,您是否真的需要while循环?
  2. if(totalPrice <= 225) break;

也许当满足特定条件时,会调查break语句以退出循环,这就是为什么您可以确保6个项目或更少且不超过225个项目。

您还需要处理0条目,因为这是一个1美分的最小值,并且您不能允许它们超过225。

priceItem = input.nextDouble();
while(priceItem < 0.01 || priceItem > 225){
System.out.println("Item Price cannot be 0 or greater than 225, please...");
priceItem = input.nextDouble();
}

您也不允许超出剩余余额的值,我将让您尝试自己想办法。到目前为止,您所做的事情还不错,您只需要对其进行分解即可。

答案 1 :(得分:1)

这就是我的构造方式:

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        double balance = 225.0;
        double itemPrice = 0;
        int boughtItems = 0;
        int maxItems = 6;

        System.out.println("Happy birthday from Auntie and Uncle! \nYou may purchase up to"
                            + " 6 items with this gift card of $225.");

        while(boughtItems < maxItems && balance > 0) {
            System.out.print("You have " + balance + "$ on your giftcard. \nEnter the price for item #" + (boughtItems + 1) + ": ");
            itemPrice = input.nextDouble();
            if(balance - itemPrice > 0.0) {
                balance -= itemPrice;
                System.out.println("You have bought the Item!\n\n\nYou can carry " + (maxItems - boughtItems - 1) + " more things!\n");
                boughtItems++;
            } else {
                if(balance - itemPrice == 0) {
                    balance -= itemPrice;
                    boughtItems++;
                    System.out.println("\nYou have spent all your money.");
                }
                else {
                    System.out.println("You dont have enough money for this Item!\n\n\n");
                }
            }
        }
        System.out.println("You bought " + boughtItems + " item/s. " + "Have fun with the stuff!");
    }

例如,您可以编写一个buy(double balance, double price)方法,以便填写分配要求。

当然,您需要完成其余的工作,例如数字格式化。

答案 2 :(得分:-2)

在while循环中,您执行了错误的分配,这就是无限循环的原因。 分配currentPrice等于totalPrice-购买商品的价格。