2012-11-26 80 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