Java I';我快完成了,但是如何循环整个程序呢?

Java I';我快完成了,但是如何循环整个程序呢?,java,loops,Java,Loops,我的收银机程序几乎完成了,它可以处理销售和退货,并在收银机中增加或减少这些金额 我唯一的问题是,一旦我添加完值,例如,程序就会关闭,我不知道如何将其循环回选项菜单。我尝试使用do循环和do while循环,但它对我大喊大叫,说它有无效的输入(可能是因为您在签出时必须按F停止) 我怎么能把这整件事循环起来 import java.util.Scanner; import java.util.ArrayList; public class Assignment3_000848913 {

我的收银机程序几乎完成了,它可以处理销售和退货,并在收银机中增加或减少这些金额

我唯一的问题是,一旦我添加完值,例如,程序就会关闭,我不知道如何将其循环回选项菜单。我尝试使用do循环和do while循环,但它对我大喊大叫,说它有无效的输入(可能是因为您在签出时必须按F停止)

我怎么能把这整件事循环起来

import java.util.Scanner;
import java.util.ArrayList;


public class Assignment3_000848913
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        ArrayList<Integer> Prices = new ArrayList<Integer>();
        ArrayList<Integer> ReturnPrices = new ArrayList<Integer>();
        int totalRegisterMoney = 0;
        int Choice = 0;

        System.out.print("What would you like to do?");
        System.out.println();
        System.out.print("Press 1. Process a sale");
        System.out.println();
        System.out.print("Press 2. Process a return");
        System.out.println();
        System.out.print("Press 3. Display Money in register");
        System.out.println();
        System.out.print("Press 4. Exit");
        System.out.println();
        Choice = in.nextInt();


        if(Choice == 1)
        {
            //THIS LOOP READS IN ALL THE PRICES//
            System.out.print("Press F when finished.");
            System.out.println();
            do
            {
                System.out.print("Enter the integer price of the item: $");
                int i = in.nextInt();
                Prices.add(i);
                System.out.println();
            }
            while(in.hasNextInt());


            int totalPrice = processSale(Prices);
            totalRegisterMoney = totalRegisterMoney + totalPrice;
            System.out.print("Your total comes to $");
            System.out.println(totalPrice);
        }
        if(Choice == 2)
        {
            System.out.print("Press F when finished.");
            System.out.println();
            do
            {
                System.out.print("Enter the price of the returned item: $");
                int j = in.nextInt();
                ReturnPrices.add(j);
                System.out.println();
            }
            while(in.hasNextInt());


            int returnTotal = processReturn(ReturnPrices);
            if(returnTotal > totalRegisterMoney)
            {
                System.out.print("Sorry, there's not that much money in the register.");
                System.out.println();
            }
            else
            {
                totalRegisterMoney = totalRegisterMoney - returnTotal;
            }

            System.out.print("You've completed the return.");
            System.out.println();
        }
        if(Choice == 3)
        {
            viewBalance(totalRegisterMoney);
        }


    }


    //END OF MAIN 
import java.util.Scanner;
导入java.util.ArrayList;
公共类分配3_000848913
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
ArrayList价格=新的ArrayList();
ArrayList ReturnPrices=新的ArrayList();
int totalRegisterMoney=0;
int-Choice=0;
System.out.print(“您想做什么?”);
System.out.println();
系统打印(“按1.处理销售”);
System.out.println();
系统输出打印(“按2.处理退货”);
System.out.println();
系统输出打印(“按3.在寄存器中显示货币”);
System.out.println();
系统输出打印(“按4.退出”);
System.out.println();
Choice=in.nextInt();
如果(选项==1)
{
//这个循环读取所有的价格//
系统输出打印(“完成后按F”);
System.out.println();
做
{
System.out.print(“输入项目的整数价格:$”;
int i=in.nextInt();
价格。添加(i);
System.out.println();
}
while(in.hasNextInt());
int totalPrice=加工销售(价格);
totalRegisterMoney=totalRegisterMoney+totalPrice;
System.out.print(“您的总数为$”;
系统输出打印项次(总价);
}
如果(选项==2)
{
系统输出打印(“完成后按F”);
System.out.println();
做
{
System.out.print(“输入退回商品的价格:$”;
int j=in.nextInt();
退货价格。添加(j);
System.out.println();
}
while(in.hasNextInt());
int returnTotal=processReturn(返回价格);
如果(returnTotal>totalRegisterMoney)
{
System.out.print(“对不起,收银机里没有那么多钱。”);
System.out.println();
}
其他的
{
totalRegisterMoney=totalRegisterMoney-returnTotal;
}
System.out.print(“您已经完成了报税表”);
System.out.println();
}
如果(选项==3)
{
viewBalance(totalRegisterMoney);
}
}
//干管末端

如果您在执行该操作时出现错误,那么您的操作是正常的

问题是,在将“F”写入退出选项1后,循环返回并尝试将该“F”转换为

Choice = in.nextInt();
这会导致错误,因为“F”不是数字。 你需要放一个

in.next();
在你

while(in.hasNextInt());
这也会发生在代码中的选项2上