2012-11-26 41 views
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 

回答

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 */ 
0

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

在您尝试添加一个值的情况下,您也在搞乱运行总数。

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

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

+0

得到它运作得不错,谢谢你们。 – WesternFive