2014-09-03 30 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

我认为你有问题,因为你使用数据类型作为你的方法的参数,当它们应该用于方法中的参数时。我不确定,所以一定要仔细检查一下。