簡體   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