创建一个参数化构造函数来确定随机边长的上界



我正在做一个类的项目,我们必须创建一个三角形类,它将保存三角形每条边的长度。我创建了一个默认构造函数,它给三角形的每条边一个不超过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;
}
}

我将把无参数构造函数中的代码移到一个接收最大边界的方法中,然后使用如下所示:

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;
}
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;
}
}
}

相关内容

  • 没有找到相关文章

最新更新