Java:收银机

Java:收银机,java,Java,我正在为圣诞树构建一个收银机应用程序。我希望能够有多个事务,这样我就可以跟踪正在进行的树的数量。问题是我可以做一笔交易,然后它就结束了。我考虑过一个while循环,但可能我做得不对,因为它创建了一个无限循环。我能做什么 import java.util.Scanner; public class PosTester { public static void main(String[] args) { Scanner in = new Scanner(Sys

我正在为圣诞树构建一个收银机应用程序。我希望能够有多个事务,这样我就可以跟踪正在进行的树的数量。问题是我可以做一笔交易,然后它就结束了。我考虑过一个while循环,但可能我做得不对,因为它创建了一个无限循环。我能做什么

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类来封装特定行为,那么这可能是有意义的!将模型逻辑与用户交互分开总是好的。由于您不熟悉堆栈溢出,请注意,如果答案解决了您的问题,您可以通过单击旁边的绿色复选标记来接受答案。看见