1

我正在为一个项目使用一个数组来存储货币值,以及一个双变量来保存运行总计。当我通过循环运行我的代码时,用户输入不会存储在数组中,并且不会将任何内容添加到运行总数中。当用户输入 -1 时,它应该打破循环并计算税收等,当输入 0 时,从数组中删除最后一个值。无论我做什么,我都无法将这些值放入数组或运行总计中。我确定我做错了什么是愚蠢的,但我无法发现它。

for(i = 0; i < priceArray.length; i++) {
    System.out.print("\nEnter the price of the item...");
    userInput = input.nextDouble();
    if(userInput == -1) { // This will break the user out of the loop.
        break;
    }
    else if(userInput == 0.0) {
        System.out.println("You entered a zero, removing last price of $" + priceArray[i] + ".");
        i--;
        runningTotal =- priceArray[i];
    }
    else if(userInput > 0.0 && userInput < 2999.99) {
        priceArray[i] = userInput;
        priceArray[i] += runningTotal;
        userInput += runningTotal;
        System.out.println("You entered $" + userInput + ", total is $" + runningTotal + ".");
    }
    else {
        i--;
        System.out.println("Please enter a valid value under $2999.99.");
    }// End if.
};// End for
4

2 回答 2

1

这里有几件事是错误的

1)当你计算运行总计时,你做错了(你根本不计算它):

priceArray[i] = userInput;
priceArray[i] += runningTotal;
userInput += runningTotal;

应该是这样的:

priceArray[i] = userInput; /* Save the price */
runningTotal += userInput; /* Increment the total */

现在您将增加 runningTotal 并正确保存价格。

2)当您删除某些内容(输入 0)时,您也做错了。您打印下一个空值,它将为零,然后取反而不是减去。

i--; /* Step back one step */
System.out.println("You entered a zero, removing last price of $" + priceArray[i] + ".");
runningTotal -= priceArray[i];
i--; /* The for-loop will increment i for us, so we must subtract one extra time */
于 2012-11-26T21:18:20.900 回答
0

在您尝试删除一个值的情况下,运行总计将会中断。 runningTotal =- priceArray[i];将该值设置为您尝试删除的值的负数。您应该使用-=而不是=-.

如果您尝试添加一个值,您也会弄乱运行总计。

priceArray[i] = userInput;
priceArray[i] += runningTotal;
userInput += runningTotal;

我不确定你认为这些线路上发生了什么。您将给定索引处的数组值设置为输入的值,这很棒。然后,您通过将 runningTotal 添加到该值来覆盖该值,这不是您想要的。然后,您通过向其添加 runningTotal 来覆盖输入值,这也不是您想要的。您想在数组中设置值,然后将值添加到 runningTotal,就是这样。

于 2012-11-26T21:18:49.933 回答