存储值不起作用?

时间:2012-11-26 20:45:43

标签: java arrays

我正在使用数组来存储货币值的项目,以及用于保存运行总计的双变量。当我通过循环运行代码时,用户输入不存储在数组中,并且没有任何内容添加到运行总计中。当用户输入-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

2 个答案:

答案 0 :(得分: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 */

答案 1 :(得分:0)

如果您尝试删除值,则运行总计将会中断。 runningTotal =- priceArray[i];会将值设置为您要删除的值的负数。您应该使用-=代替=-

如果您尝试添加值,则还会弄乱运行总计。

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

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