2014-09-03 32 views
0

好吧,所以我剛開始這個家庭作業實驗室,我遇到了一些麻煩。我尋找過任何解決方案,但它們都比我能理解的要複雜得多。我正在尋找所需的美元和需要改變以購買東西。我只是想出了一些數字,當我運行該文件時,我得到一個錯誤。任何人都可以幫助我找到如何完成方程以獲得總和值。另外dollarsNeeded需要是int而不是double。 changeNeeded可以是雙倍的。任何幫助將不勝感激。修復方法和參數錯誤

java:30: error: possible loss of precision 
    findDollars = xboxOne + newGame; 
         ^
required: int 
found: double 
1 error 

public class MoneyNeeded 
{ 
public static void main(String[] args) 
{ 
    double xboxOne, newGame, moneyNeeded; 
    xboxOne = 320.41; 
    newGame = 64.36; 
    moneyNeeded = findMoney(xboxOne, newGame); 
    System.out.println(moneyNeeded); 

    int dollarsNeeded; 
    dollarsNeeded = findDollars(xboxOne, newGame); 
    System.out.println(dollarsNeeded); 

    double changeNeeded; 
    changeNeeded = findChange(xboxOne, newGame); 
    System.out.println(changeNeeded); 
} 

public static double findMoney(double xboxOne, double newGame) 
{ 
    double findMoney; 
    findMoney = xboxOne + newGame; 
    return findMoney; 
} 

public static int findDollars(double xboxOne, double newGame) 
{ 
    int findDollars; 
    findDollars = xboxOne + newGame; 
    return findDollars; 
} 

public static double findChange(double findDollars, double findMoney) 
{ 
    double findChange; 
    findChange = findMoney % findDollars; 
    return findChange; 
} 
} 
+0

「我得到一個錯誤」 是很模糊的。你能發佈你得到的錯誤嗎? – 2014-09-03 02:54:16

+0

我做了..第一部分在頂部。 – Junior110697 2014-09-03 02:55:39

+0

你有嘗試'findDollars = xboxOne.intValue()+ newGame.intValue();'? – 2014-09-03 02:58:05

回答

0

所以,你可以這樣做:

findDollars = xboxOne.intValue() + newGame.intValue(); 

findDollars = (int)(xboxOne + newGame); 
+0

這是我的輸出。我需要簡單地減去前兩個方法得到0.77,但是我得到了-256。我不知道爲什麼這是輸出。 --------------------配置: -------------------- 384.77000000000004 -256.05 過程完成。 – Junior110697 2014-09-03 03:18:45

+0

你爲什麼要在你的方法中使用Integer?你想從'findDollars()'的輸出中減去'findChange()'和'findMoney()'的輸出?對。 – 2014-09-03 03:26:27

+0

爲什麼不使用'-'而不是'%'? – 2014-09-03 03:34:30

0

你不能總結兩個雙打,並把結果放在一個int,因爲int不能包含小數部分,所以你會..好..鬆散的精度。

如果您沒有問題失去小數部分,你可以明確地砸在遠:

findDollars = (int)(xboxOne + newGame); // Simply truncate the decimal part away 

但通常不是一個好主意,造成0.2 + 0.2將返回0

+0

是的,這就是我想要做的。我想找到美元的int#。不用找了。所以說一些東西是2.42美元。我需要2美元。 – Junior110697 2014-09-03 03:02:50

+0

好的,這確實解決了錯誤,我收到了這個作爲輸出 – Junior110697 2014-09-03 03:10:43

+0

前兩個答案是正確的,但最後一個應該是0.77 384.77000000000004 64.36 – Junior110697 2014-09-03 03:12:06

0

我認爲你有問題,因爲你使用數據類型作爲你的方法的參數,當它們應該用於方法中的參數時。我不確定,所以一定要仔細檢查一下。