如何在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//方法,即使它被调用为usedTriangle(10,10,10)
或Triangle(),然后set()
也是100%相同的
Triangle result = new Triangle();
result.setSideA(10);
result.setSideB(10);
result.setSideC(10);