修复方法和参数错误

时间:2014-09-03 02:49:30

标签: java methods parameters operations

好的,所以我刚开始做这个作业实验室而且我遇到了一些麻烦。我搜索过任何解决方案,但它们看起来都比我能理解的要复杂得多。我正在寻找所需的美元和购买东西所需的变化。我只想出了一些数字,当我运行文件时,我得到一个错误。任何人都可以帮我找到如何完成方程式以获得总和值。另外,DollarNeeded需要是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;
}
}

3 个答案:

答案 0 :(得分:0)

你不能将两个双精度相加并将结果放在一个int中,因为int不能包含小数部分,所以你会......好......松散的精度。

如果你没有丢失小数部分,你可以明确地删除它:

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

但通常不是一个好主意,因为0.2 + 0.2会返回0.

答案 1 :(得分:0)

我认为您遇到问题是因为您使用数据类型作为方法的参数,而它们应该用于方法中的参数。我'我不确定,所以一定要仔细检查一下。

答案 2 :(得分:0)

所以你可以这样做:

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

findDollars = (int)(xboxOne + newGame);