这是我的代码的相关部分..
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()会被调用,当我在dailySales()中输入一个数字时,会一次又一次地调用它。
示例输出:
完成1后请输入产品编号或-1 输入产品1:2的销售总价值 输入产品1的销售总价值:
答案 0 :(得分:5)
在while
循环中,没有任何内容会更改productNo
的值,因此它将是一个无限循环。
提示用户并获得更多输入,在productNo
循环底部再次更改while
。
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();
}
答案 1 :(得分:0)
这个问题是你只为productno分配一次值(就在while循环之前) 然后调用dailySales,其中productno的值不会更改。当您从dailySales返回时,productno没有更改(在您的示例中,它仍然是1)。 然后while循环再次检查productno的值,并再次调用dailySales。
你想念的是在while循环中调用dailySales之后,询问(并阅读)productno的新值。