【问题标题】:Java - cannot convert double to integer while dividing doublesJava - 在除以双精度时无法将双精度转换为整数
【发布时间】:2019-12-13 16:03:44
【问题描述】:

对此很陌生,试图建立一个项目,其中 jonkosgramassie 除以 jonkowaarde 的结果。

我不断收到错误消息:“无法从 double 转换为 int”

代码:

package test;
    import java.util.Scanner; 
    import java.lang.Math.*;
public class jonkocalculator {



    public static void main(String[] args) {
        //kijken hoeveel jonkos je kunt draaien uit hoeveelheid assie
        Scanner jonkoscanner = new Scanner(System.in); 
        double  jonkowaarde, gramassie;

        jonkowaarde = 0.3;

        System.out.println("Hoeveel gram assie heb je g?");
        gramassie = jonkoscanner.nextDouble();

        int jonkos = (int)gramassie/jonkowaarde; //this is where the error occurs

        System.out.println("Met "+gramassie+" gram kun je "+jonkos+" jonkos draaien g");
    }

}

【问题讨论】:

    标签: java integer double calculation


    【解决方案1】:
    (int)gramassie/jonkowaarde
    

    gramassie 转换为int,然后将其除以double。因此,除法的结果是双精度数,您尝试将其分配给 int 变量(因此出现错误)。

    您希望除法的结果是 int,而不是 gramassie。所以应该是

    (int) (gramassie / jonkowaarde)
    

    【讨论】:

    • 非常感谢。在我们的 Java 课结束后老师走开了几个小时后被这个问题困住了;P
    • 当你开始时,尤其是当你遇到这样的问题时,最好每行做一件事。所以你最好用double divisionResult = gramassie/jonkowaarde; int resultAsInt = (int) divisionResult;写代码
    【解决方案2】:

    运算符 cast ((type)value) 优先于 divide(/)。所以,你的代码意味着:

    int jonkos = ((int)gramassie)/jonkowaarde;
    

    首先将grassamie 转换为int,然后除以jonkowaarde - 仍然是double,所以它产生double!要解决此问题,请添加括号:

    int jonkos = (int)(gramassie/jonkowaarde);
    

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 2015-09-13
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 2016-03-13
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多