繁体   English   中英

摆脱无限循环的最佳方法是什么?

[英]What is the best way to escape this infinite loop?

这是我的代码的相关部分。

static void salesSlip( String[] day)
{
    // for each employee
    for (int i = 0; i < salesArray[0].length; i++)
    {   
        int employeeNo = i + 1;
        System.out.printf("Employee %d please enter sales details for %s\n", employeeNo, day[i]);
        System.out.println("------------------------------------------------");

        // for each product chosen call dailySales  
        System.out.println("Please enter product number or -1 when finished");
        int productNo = input.nextInt();

        while (productNo != -1)
        {
            dailySales(productNo, employeeNo);
        }
    }

}

static void dailySales(int product, int employeeNo)
{
    System.out.printf("Enter total value of sales for product %d:", product);
    int sales = input.nextInt();
    salesArray[product][employeeNo] = sales; 
}

当我输入非-1的数字时,将被调用,而当我在dailySales()中输入数字时,将被反复调用。

样本输出:

员工1请输入星期一的销售详细信息

请输入产品编号或完成后输入-1 1
输入产品1:2的销售总值
输入产品1的销售总值:

while循环中,没有任何改变productNo的值,因此它将是一个无限循环。

提示用户并获得更多输入,在while循环的底部再次更改productNo

System.out.println("Please enter product number or -1 when finished");
int productNo = input.nextInt();

while (productNo != -1)
{
    dailySales(productNo, employeeNo);

    System.out.println("Please enter product number or -1 when finished");
    productNo = input.nextInt();
}

问题是您只给productno分配了一个值(恰好在while循环之前),然后调用了dailySales,其中productno的值未更改。 当您从dailySales返回时,产品编号未更改(在您的示例中,该编号仍为1)。 然后while循环再次检查productno的值,并再次调用dailySales。

您错过的是在while循环内调用dailySales之后询问(并读取)productno的新值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM