Java:收银机
我正在为圣诞树构建一个收银机应用程序。我希望能够有多个事务,这样我就可以跟踪正在进行的树的数量。问题是我可以做一笔交易,然后它就结束了。我考虑过一个while循环,但可能我做得不对,因为它创建了一个无限循环。我能做什么Java:收银机,java,Java,我正在为圣诞树构建一个收银机应用程序。我希望能够有多个事务,这样我就可以跟踪正在进行的树的数量。问题是我可以做一笔交易,然后它就结束了。我考虑过一个while循环,但可能我做得不对,因为它创建了一个无限循环。我能做什么 import java.util.Scanner; public class PosTester { public static void main(String[] args) { Scanner in = new Scanner(Sys
import java.util.Scanner;
public class PosTester
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
POS register = new POS();
boolean done = false;
while (!done)
System.out.println("Please enter price of tree: ");
double purchase = in.nextDouble();
System.out.println("Is order complete? Type: Y/N");
String choice = in.next();
if (choice.equalsIgnoreCase("y"))
{
System.out.println("Your total is: " + purchase);
System.out.println("<--------------------------->");
System.out.println("Please enter payment amount: ");
double payment = in.nextDouble();
double change = payment - purchase;
System.out.println("Your change is: $ " + change);
int treeCount = 10; //lot contains 10 trees
treeCount--; // remove tree from inventory
if (treeCount == 5)
{
System.out.println("You're down to 5 Christmas Trees" );
}
}
else if (choice.equalsIgnoreCase("n"))
{
System.out.println("Please add another item");
System.out.println("Enter price of the next tree: ");
}
}
}
import java.util.Scanner;
公共类博士后
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
POS寄存器=新POS();
布尔完成=假;
而(!完成)
System.out.println(“请输入树的价格:”);
双重购买=in.nextDouble();
系统输出打印项次(“订单是否完成?类型:是/否”);
字符串选择=in.next();
if(选择相等信号情况(“y”))
{
System.out.println(“您的总数为:“+购买量”);
System.out.println(“”);
System.out.println(“请输入付款金额:”);
双倍付款=in.nextDouble();
双变=付款-购买;
System.out.println(“您的更改为:$”+更改);
int treecoount=10;//批次包含10棵树
treeCount--;//从目录中删除树
如果(treeCount==5)
{
System.out.println(“你只剩下5棵圣诞树了”);
}
}
else if(选择.相等信号情况(“n”))
{
System.out.println(“请添加另一项”);
System.out.println(“输入下一棵树的价格:”);
}
}
}
您的程序将无限期打印请输入树的价格:
你知道没有大括号的而只适用于下一行吗
while (!done)
// do something
// do something else
上面的代码只能在无限循环中执行做一些事情。你真的想在任何你想循环的东西周围加上花括号:
while (!done) {
// do something
// set done to true at some point, or break from the loop
}
以下是一些提示:
- 正确缩进代码有助于发现问题。大多数IDE都应该为您自动格式化代码,您可能会注意到
之后的System.out.println
缩进与其他代码不同
- 如果您学习了如何使用调试器,错误将变得非常明显,因为您将永远不会在
之后而在之后跳出行
谢谢。真不敢相信我竟然忽略了括号。停止无限循环;但是,由于某种原因,树木计数似乎不起作用。我对调试器不是很熟悉,我知道这是我必须学习的东西。你知道我错过了什么树计数吗?你的treeCount
在每个循环中总是初始化为10。如果你想让它变低,你需要在循环之外的某个地方初始化它。谢谢!这是有道理的。在这方面我是个新手,所以我的眼睛很容易交叉看这段代码。如果有人不介意帮忙,还有一个问题。设置另一个类并创建方法来计算总销售额是否合适?如果您已经有一个POS类来封装特定行为,那么这可能是有意义的!将模型逻辑与用户交互分开总是好的。由于您不熟悉堆栈溢出,请注意,如果答案解决了您的问题,您可以通过单击旁边的绿色复选标记来接受答案。看见