0

我正在为一个班级项目工作,我们必须创建一个三角形类来保存三角形每一边的长度。我创建了一个默认构造函数,它为三角形的每一边提供不超过 6 的随机长度。被要求创建一个参数化构造函数,允许调用者确定随机边长的上限,如果提供的上限无效,此构造函数应默认为默认构造函数中使用的范围。

下一步是我们必须创建另一个参数化构造函数,允许调用者直接指定三边长度,如果三个长度中的任何一个无效,则应使用默认构造函数中使用的范围随机生成所有长度。

我不知道如何得到这个。这是我到目前为止所拥有的......

import java.util.Random;

public class Triangle {
    int side1;
    int side2;
    int side3;

   //Default Constructor
    public Triangle() {
        Random rng = new Random();
        side1 = rng.nextInt(6)+1;
        side2 = rng.nextInt(6)+1;
        side3 = rng.nextInt(6)+1;
    }

   //toString method
    public String toString() {
        return new String (" " + side1+ " x " +side2+ " x " +side3);
    }

    //Parameterized Constructor
    Triangle (int side11, int side22, int side33) {
        side1 = side11;
        side2 = side22;
        side3 = side33;
    }
}
4

2 回答 2

0
package Proj3;

/**
 * Title: Triangle data class
 * Description: 
 * @author Jahangir Khan N00769290
 * 
 */

import java.util.Random;

public class Triangle {

    int side1;
    int side2;
    int side3;

    public Triangle() {
        initSides(6);
    }


    private void initSides(int max) {
        Random rng = new Random();
        side1 = rng.nextInt(max)+1;
        side2 = rng.nextInt(max)+1;
        side3 = rng.nextInt(max)+1;
    }


    //toString method
    public String toString() {
        return new String (" " + side1+ " x " +side2+ " x " +side3);
    }

    //Parameterized constructor
    public Triangle(int max) {
        this(); 
        if (max > 0) {
            initSides(max);
        }
    }


    //Parameterized constructor
    public Triangle (int side1, int side2, int side3) {
        this(); // call the no parameter constructor
        if ((side1 > 0) && (side2 > 0) && (side3 > 0)) {
            this.side1 = side1;
            this.side2 = side2;
            this.side3 = side3;
        }
    }

    //isEquilateral method
    public boolean isEquilateral() {
        if (side1 == side2 && side1 == side3)
        {
            return true;
        }
        else 
        {
            return false;
        }
    }

    public boolean isRight() {
        int a1 = side1*side1;
        int b1 = side2*side2;
        int c1 = side3*side3;
        if(c1== a1+b1 || b1==a1+c1 || a1==b1+c1){
            return true;
        }
        else {
            return false;
        }

    }

}
于 2021-10-27T19:37:28.433 回答
0

我会将无参数构造函数中的代码移到接收该最大界限的方法中,然后使用如下所示的内容:

public Triangle() {
    initSides(6);
}

public Triangle(int max) {
    this(); // call the no parameter constructor
    if (max > 0) {
        initSides(max);
    }
}

public Triangle (int side1, int side2, int side3) {
    this(); // call the no parameter constructor
    if ((side1 > 0) && (side2 > 0) && (side3 > 0)) {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }
}

private void initSides(int max) {
    Random rng = new Random();
    side1 = rng.nextInt(max)+1;
    side2 = rng.nextInt(max)+1;
    side3 = rng.nextInt(max)+1;
}
于 2021-10-27T01:28:59.707 回答