0

我正在尝试制作一个程序,在给定所有三个边的值的情况下计算三角形的面积。当我使用运行程序文件运行程序时,我的区域显示为“0.0”

这是课程的完整代码(我也知道我为 setSides 和 triangle 做了相同的代码,但我的导师给了我们这个 shell,我不知道在里面放什么)

import java.util.Scanner; 
import java.lang.Math.*;

public class Triangle
{
 private int sideA;
 private int sideB;
 private int sideC;
 private double theArea; 
 private double s; 
 private double perimeter; 

 public Triangle()
 {
     sideA = 1;
     sideB = 1;
     sideC = 1;
 }

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


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

 private double calcPerimeter()
 {
  double perimeter = sideA + sideB + sideC;
        return perimeter;
 }



private double calcArea()
 {
  double s = calcPerimeter() / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

 public void print()
 {
    System.out.println("Area == " + theArea); 
 }
}
4

3 回答 3

2

我根据你的陈述做了一个系统。您使用的不是减法运算符。请解决这个问题。它会起作用的。同时定义permiter.

System.out.println((int)'–');

输出:
8211

于 2015-09-21T13:06:16.723 回答
1

您是否有可能从不是简单文本文档的文档中复制了一些源代码?

如果是这样,那么您的问题是您的减号不是正确的字符。尝试在文本编辑器中重新输入它们。

ED:另外,减号应该用空格包围。当我第一次看到这个时,它把我扔了。

在您修改后的代码中,您可以对负数求平方根,这会使您处于非常糟糕的状态。

于 2015-09-21T13:06:25.157 回答
0

消除:

private double perimeter; 

并改变:

 private double calcArea()
 {
  double s = perimeter / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

至:

 private double calcArea()
 {
  double s = calcPerimeter() / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

这是正在发生的事情。您声明了一个名为 perimeter 的私有替身。稍后在代码中,您再次声明了一个名为 perimeter 的 double。当你这样做时,事情变得非常混乱!确保只声明具有相同名称的变量 ONCE,然后引用它们。

于 2015-09-21T14:01:28.420 回答