我是編碼新手。我正在通過編寫一個程序來練習,該程序在減去他/她的經紀人的削減后給演員他/她的報酬。為什么會輸出錯誤的計算?我似乎無法弄清楚問題所在。我在網上搜索,我確信我的數學是正確的。它應該沒有理由輸出除正確答案以外的任何內容。假設演員的片酬是 100.00 美元,經紀人的提成是 15%。演員應該得到 %85.00,對嗎?奇怪的是,控制臺輸出 600 美元。我知道這違反了網站的規(guī)則,但我發(fā)現復制并粘貼整個項目很重要,但不會那么長。這里是:..導入 java.util.Scanner;公共課主要{static int payBefore;static int percentageTaken;static int totalAfterCut;static int percentageDividedBy100 = percentageTaken/100;static int middleOfCalculation;static Scanner payBeforeSc = new Scanner(System.in);static Scanner percentageSc = new Scanner(System.in);static Scanner middleOfCalculationSc = new Scanner(System.in);public static void main(String args[]) { incomeAndPercentageQuestions();}private static void incomeAndPercentageQuestions() { System.out.println("How much did your job pay before any agent cuts?"); payBefore=payBeforeSc.nextInt(); System.out.println("What percentage is your agent taking?"); percentageTaken=percentageSc.nextInt(); calculation();}私有靜態(tài)無效計算(){ totalAfterCut = payBefore * (100 / percentageTaken); output();}私有靜態(tài)無效輸出(){ System.out.println("$" + totalAfterCut + " will be your pay after your agent's cut.");}}
1 回答

冉冉說
TA貢獻1877條經驗 獲得超1個贊
我認為這與您的數學不正確有關。您的部門順序錯誤。它應該是這樣的:
totalAfterCut = payBefore * (percentageTaken / 100.0); //Actually amount deducted
正如 Nexevis 指出的那樣,您的數學返回的是扣除的金額,而不是扣除后的金額。所以也更改它,以便從 payBefore 中減去扣除的金額:
totalAfterCut = payBefore - (payBefore * (percentageTaken / 100.0));
在處理這些類型的值時,您還應該使用浮點數據類型,因為對于整數,小數部分將被截斷。因此,這意味著 15/100(均為整數)的結果始終為 0。您可以將 percentageTaken 保留為整數,然后使用 100.0(而不是 100)來獲取浮點值。如果您擔心值的美分部分,還要確保將結果保存為浮點數據類型。
double totalAfterCut; totalAfterCut = payBefore - payBefore * (percentageTaken / 100.0);
我還將 payBefore 更改為浮點數據類型,以便用戶可以輸入包括美分在內的準確金額。
double payBefore; payBefore=payBeforeSc.nextDouble();
添加回答
舉報
0/150
提交
取消