我正在尝试创建一个为三角形设置三个边的代码,然后计算三角形的周长,三角形的面积,并确定三角形是否为钝角。我已经完成了所有代码,并且没有错误。当我运行程序时,没有任何反应。没有输出,我无法看到我创建的任何方法中发生了什么。如果有人能帮我弄清楚哪里出错了,我们将不胜感激。
代码:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package triangle;
import java.lang.Math;
/**
*
* @author Dan
*/
public class Triangle
{
private double side1;
private double side2;
private double side3;
private double Area;
private double Perim;
/**
* Create Triangle object
* @param sideA for side one
* @param sideB for side two
* @param sideC for side three
*/
public Triangle(double sideA, double sideB, double sideC)
{
if (sideA >= 0 || sideB >= 0 || sideC >= 0)
System.exit(0);
else
side1 = sideA;
side2 = sideB;
side3 = sideC;
System.out.println("The chosen values for each side are:");
System.out.println("Side 1: " +side1);
System.out.println("Side 2: " +side2);
System.out.println("Side 3: " +side3);
System.out.println();
}
/**
* Create a method for calculating the perimeter
* of a triangle
*/
public double getPerimeter()
{
Perim = side1+side2+side3;
System.out.println("The perimeter of the triangle is: " +Perim);
System.out.println();
}
/**
* Create a method for calculating the area
* of a triangle
*/
public void getArea()
{
Area = Math.sqrt((Perim/2)*((Perim/2)-side1)*((Perim/2)-side2)*((Perim/2)-side3));
System.out.println("The Area of the triangle is: " +Area );
System.out.println();
}
/**Create a method to determine if a triangle is obtuse or not
*/
public void isObtuse()
{
/**
* determines if the square of two sides is less than the square of the remaining side
*/
if ((Math.pow(side1,2) + Math.pow(side2,2) < Math.pow(side3,2)) ||
(Math.pow(side3,2) + Math.pow(side1,2) < Math.pow(side2,2)) ||
(Math.pow(side3,2) + Math.pow(side2,2) < Math.pow(side1,2)))
System.out.println("The triangle is obtuse: 1");
else
System.out.println("The triangle is not obtuse: 0");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
Triangle tri = new Triangle(10,20,30);
System.out.println(tri.Perim);
System.out.println(tri.Area);
tri.isObtuse();
}
}
答案 0 :(得分:0)
创建Triangle
实例时,将调用构造函数。构造函数中的以下代码:
if (sideA >= 0 || sideB >= 0 || sideC >= 0) {
System.exit(0); // exit program
}
当三角形的任何边都是>= 0
时,将完成程序。
||
运算符是逻辑OR
,这意味着如果任何条件为true
,整个表达式将为true
}。
因此,如果三角形边是10
,20
和30
。由于它们是正值(>=0
)值,程序将在达到条件时完成。
,您应该在方法return
中添加getPerimeter
语句,因为其返回类型为double
,而不是void
:< / p>
return Perim;
答案 1 :(得分:0)
这些界限没有任何意义:
if (sideA >= 0 || sideB >= 0 || sideC >= 0)
System.exit(0);
这表示&#34;如果sideA,sideB或sideC大于0,则退出程序。&#34;哪个不适用于传递给构造函数的三个值(10,20,30)。也许您想检查是否小于或等于零(<= 0
)?
之后,您需要调用getPerimeter()
和getArea()
方法,以便在您班级的Area
和Perim
字段中输入值。您的getPerimeter()
方法不必返回任何内容,因此方法声明中的double
是不必要的,因为您不会返回任何内容。它可以只是public void getPerimeter()
。
附注:标准地,字段名称以小写字母开头并使用camelCase。
答案 2 :(得分:0)
首先,必须以某种方式初始化一些变量。例如,我通常做的是:
//...
private double side1;
private double side2;
private double side3;
private double Area;
private double Perim;
public Triangle(double sideA, double sideB, double sideC){
Area = 0.0;
Perim = 0.0;
//...
}
它更合适,因为您将这些变量用于以下方法。
现在,你的陈述if (sideA >= 0 || sideB >= 0 || sideC >= 0) System.exit(0);
实际上是sais&#34;如果至少有一方是正数,退出程序。&#34;我建议您将其更改为
if (sideA <= 0 || sideB <= 0 || sideC <= 0) System.exit(0);
else
//...
改变那些小事,让我知道。