我的任务是创建一个计算器,可以计算购买物品后礼品卡上还剩多少,但还要确保不要超过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循环时,这都是一个无限循环,而且我不确定要插入哪个计算来使其中断。
答案 0 :(得分:1)
我不想给您答案,因为这是您应该解决的问题,但我会给出一些指示。
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-购买商品的价格。