2013-09-09 7 views
1

Когда я запускаю этот код, я получаю неправильный вывод для computeArea() и computeVolume(). Логично, я считаю, что формулы верны. Например, вход для тетраэдра - длина стороны 4 (равносторонний треугольник), высота 5. Правильный ответ равен 37,72 для области и 11,55 для объема. То, что мой код выставляет, составляет 27,71 для области и 0,0 для объема. Так что я довольно смущен, почему он не будет работать. С этим связано намного больше кода, поэтому я помещаю сегмент, на который, я думаю, проблема. Спасибо заранее!Площадь поверхности и код объема тетраэдра Java

public double computeArea() 
    { 

     double tetrahedronSurfaceArea; 
     tetrahedronSurfaceArea = 4*((Math.sqrt(3)/4) *side*side); 
     return tetrahedronSurfaceArea; 
    } 

    public double computeVolume() 
    { 
     double tetrahedronVolume; 
     tetrahedronVolume = (1/3) * (((Math.sqrt(3))/4)*side*side) * height; 
     return tetrahedronVolume; 
    } 

    public String toString() 
    { 
     String tetrahedronResult = "area is " + computeArea() + "\n"; 
     tetrahedronResult = tetrahedronResult + "volume is " + computeVolume() + "\n"; 
     return tetrahedronResult; 
    } 
+0

Вы понимаете, что, если все ребра тетраэдра имеет длину 4, высота не может быть ВОЗМОЖНА 5, верно? Это будет 4 * sqrt (2/3). Ваша математика ошибочна. –

+0

Мой учитель назначил, что длина стороны равна 4, а высота равна 5:/ – user2762979

+0

Но это физически невозможно; поэтому нет правильного ответа ни для площади поверхности, ни для объема. –

ответ

2

Убедитесь, что по крайней мере один из операндов является число с плавающей точкой при выполнении деления на целое число в противном случае результат будет обрезан.

В Java int/int выдается int, что приводит к усечению дробных цифр.

Когда numerator < denominator результат всегда будет обрезан до 0

tetrahedronVolume = (1/3.0) * (((Math.sqrt(3))/4)*side*side) * height; 
+1

+1, но, может быть, приятно объяснить * почему * –

+0

О, моя добра так просто! Огромное спасибо!! – user2762979

+0

Целый дивизион снова наносит удар! – Sinkingpoint

Смежные вопросы