Java三角类

时间:2018-02-04 05:27:03

标签: java class object

我是对象和类的新手。我正在创建这个测试程序以获得三角形的区域。我一直在0区域。我不知道我哪弄错了。

public class Project1 {
    public static void main(String args[]) {
        Triangle triangle1 = new Triangle();

        System.out.println("The area of the triangle with base "
            + triangle1.base + "and with width "
            + triangle1.width + " is " + triangle1.getArea());
    }
}

class Triangle {
    double base = 1.0;
    double width = 1.0;

    double getArea() {
        return  1 / 2 * base * width;
    }
}

4 个答案:

答案 0 :(得分:1)

更改以下内容

 double getArea() {
        return  1/2 * base * width;
    }

 double getArea() {
        return  0.5 * base * width;
    }

由于整数除法1/2产生0。

答案 1 :(得分:0)

说明

您正在计算1 / 2

整数除法不支持十进制值。它总是向零舍入,因此结果是

1 / 2 = 0

因此计算得到0

解决方案

您可以通过除以十进制值而不是整数来修复它:

return  1.0 / 2.0 * base * width;

只要其中一个操作数是doublefloat之类的十进制值,就没有整数除法。您可以通过添加来表示double,例如2.0

或者,您可以从头开始使用小数值0.5

return 0.5 * base * width;

请注意,两个版本都同样快,因为编译器会在编译时预先计算这种常量计算。因此,两个版本的字节码都有0.5

答案 2 :(得分:0)

尝试在double方法中使用getArea()数字,如下所示:

double getArea() {
    return  1.0 / 2.0 * base * width;
}

答案 3 :(得分:0)

这对Java初学者来说是一个很常见的错误,我承认我有时候会犯这个错误。在Java中将一个整数除以另一个整数时,结果也将是整数。因此,当您预期1/2为0.5时,结果将为0(即它被截断)。您可以先强制转换数字以强制除法使用float或double,如:

1 /(浮动)2
1 /(双)2

或使用简写:

1 / 2f
1 / 2d

其中f将数字转换为浮动,d加倍。