如何将一个方法中的变量值传递给另一个方法?

时间:2014-07-05 18:22:09

标签: java variables methods

我正在尝试创建一个为三角形设置三个边的代码,然后计算三角形的周长,三角形的面积,并确定三角形是否为钝角。我已经完成了所有代码,并且没有错误。当我运行程序时,没有任何反应。没有输出,我无法看到我创建的任何方法中发生了什么。如果有人能帮我弄清楚哪里出错了,我们将不胜感激。

代码:

/*
 * 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();

    }

}

3 个答案:

答案 0 :(得分:0)

创建Triangle实例时,将调用构造函数。构造函数中的以下代码:

if (sideA >= 0 || sideB >= 0 || sideC >= 0) {
    System.exit(0); // exit program
}
当三角形的任何边都是>= 0时,

完成程序。

||运算符是逻辑OR,这意味着如果任何条件为true整个表达式将为true }。

因此,如果三角形边是102030。由于它们是正值(>=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()方法,以便在您班级的AreaPerim字段中输入值。您的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
//...

改变那些小事,让我知道。