创建参数化构造函数以确定随机边长的上限
Creating a parameterized constructor to determine upper bound for randomized side lengths
我正在为 class 做一个项目,我们必须创建一个三角形 class 来保存三角形每条边的长度。我创建了一个默认构造函数,它为三角形的每一边提供了不超过 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;
}
}
}
我正在为 class 做一个项目,我们必须创建一个三角形 class 来保存三角形每条边的长度。我创建了一个默认构造函数,它为三角形的每一边提供了不超过 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;
}
}
}