Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用float计算分数_Java_Encapsulation_Getter Setter_Fractions - Fatal编程技术网

如何在java中使用float计算分数

如何在java中使用float计算分数,java,encapsulation,getter-setter,fractions,Java,Encapsulation,Getter Setter,Fractions,我的花车有问题。我的第一个问题是我的公共浮动区域(),问题是结果值返回零。第二个是公共浮点计算高度(),将不返回任何值。我有点头疼。请帮帮我谢谢你。如果复制或重新发布,只需删除。多谢各位 private int sideA, sideB, sideC; private float computePerimeter; private float area; private float computeHeight; public Triangle(){ } // I want to set al

我的花车有问题。我的第一个问题是我的公共浮动区域(),问题是结果值返回零。第二个是公共浮点计算高度(),将不返回任何值。我有点头疼。请帮帮我谢谢你。如果复制或重新发布,只需删除。多谢各位

private int sideA, sideB, sideC;
private float computePerimeter;
private float area;
private float computeHeight;

public Triangle(){
}

// I want to set all sides to 10

public Triangle(int a, int b, int c){
    sideA = a;
    sideB = b;
    sideC = c;
}

//setters & getters

//perimeter is the sum of all the sides of the triangle.
public float computePerimeter(){
    computePerimeter = sideA + sideB + sideC;
    return computePerimeter;
}


//A=1/2bh.
//A = Area of the triangle
//b = Length of the base of the triangle //SideB
//h = Height of the base of the triangle //SideA

public float area(){
     area =   1/2 * (sideB  * sideA);
     return area;
}

public float computeHeight(){
     sideC = 2 * (area/sideB) ;
     return computeHeight;
}


public void display(){
        System.out.println("Side A: "+getSideA() +" Side B: "+getSideB()+" Side C: "+getSideC() );
        System.out.println("\nThe sum of all the sides of the triangle is: " +computePerimeter() );
        System.out.println("The area of the triangle is: " + area() );
}

public static void main(String []args){
    Triangle result = new Triangle();
    result.setSideA(10);
    result.setSideB(10);
    result.setSideC(10);
    result.display();

}
也许:

加上“f”和铸造使数字被视为浮点数

有关:


如果不这样做,则该数字将被当作整数处理(整数世界中的1/2=0)。因此会丢失很多精度。

1/2
返回0因为它们是int,所以需要使用
(1.0/2)

另外,我建议您将所有的
浮点值
int
替换为
double
(对于6个属性),这样您就不会出现警告
可能的损失转换”,以避免在数字后面使用
(浮点值)
,并使用
f`

private double sideA, sideB, sideC, computePerimeter, area, computeHeight;

我将向您学习一个技巧,这将把结果分配到
区域
,并返回它:

public double area() {
     return (area = 1.0 / 2 * (sideB * sideA));
}

最后一件事,因为您有一个
公共三角形(双a、双b、双c)
构造函数,您可以替换它

Triangle result = new Triangle();
result.setSideA(10);
result.setSideB(10);
result.setSideC(10);

通过
三角形结果=新三角形(10,10,10)在一行中

我知道了,谢谢,先生。我试试你的想法。comuteHeight2nd中从float到int的可能有损转换是公共float computeHeight(),不会返回任何值。这简直是不可能的。你想说什么?@KennethIsrael在我告诉你用double替换后,你发表评论,请在评论之前阅读;)谢谢,先生,但是computeHeight的结果将覆盖SideC.overwrite*的设置值,不,因为您从未调用computeHeight//方法,即使它被调用为used
Triangle(10,10,10)
Triangle(),然后set()
也是100%相同的
Triangle result = new Triangle();
result.setSideA(10);
result.setSideB(10);
result.setSideC(10);