【问题标题】:Fixing a method and parameter error修复方法和参数错误
【发布时间】:2014-09-03 02:49:29
【问题描述】:

好的,所以我刚刚开始了这个家庭作业实验室,但遇到了一些麻烦。我已经搜索了任何解决方案,但它们似乎都比我能理解的要复杂得多。我正在寻找购买东西所需的美元和零钱。我只是想出了一些数字,当我运行文件时出现错误。谁能帮我找到如何完成方程式以获得总和值。此外,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;
}
}

【问题讨论】:

  • “我得到一个错误”是相当模糊的。你能发布你得到的错误吗?
  • 我做了.. 顶部的第一部分。
  • 你试试findDollars = xboxOne.intValue() + newGame.intValue(); 吗?
  • 收到两个“。”的错误。在 intValue() 之前
  • 没关系,它现在起作用了。我的错误很简单。

标签: java methods parameters operations


【解决方案1】:

所以你可以这样做:

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

findDollars = (int)(xboxOne + newGame);

【讨论】:

  • 这是我的输出。我需要简单地减去前两种方法得到 0.77,但我得到 -256。我不知道为什么这是输出。 --------------------配置:-------- 384.77000000000004 384 -256.05 进程完成。
  • 你为什么在你的一种方法中使用整数?并且您想从findDollars() 的输出中减去findChange()findMoney() 的输出?对。
  • 你为什么不用- 而不是%
  • & 我认为您在更改函数中传递了错误的参数,您必须将其中的前 2 个函数输出作为参数传递。
【解决方案2】:

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

如果您可以忽略小数部分,您可以明确地将其删除:

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

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

【讨论】:

  • 是的,这就是我想要做的。我想找到美元的整数。没变。所以说一些东西是2.42美元。我需要 2 美元。
  • 好的,这确实解决了错误,我收到了这个作为输出
  • 前两个答案是正确的,但最后一个应该是 0.77 384.77000000000004 384 64.36
【解决方案3】:

我认为您遇到问题是因为您将数据类型用作方法的参数,而它们应该用于方法中的参数。不过我不确定,所以请务必仔细检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2021-02-11
    相关资源
    最近更新 更多