Java实现Triangle类参数化构造器设置随机边长上限问题咨询
Triangle类构造器实现方案
实现逻辑说明
- 先抽取公共的随机边长生成方法,避免多构造器里重复写相同逻辑
- 优化原有冗余代码:toString方法中不需要额外创建String对象,直接返回拼接后的字符串即可
- 参数校验规则:
- 随机边长上限无效判定:传入上限 ≤ 1(边长最小为1,上限需大于1才能生成合法正整数边长),校验不通过则默认用6作为上限
- 传入的指定边长无效判定:任意一边 ≤ 0,校验不通过则全部走1-6的随机生成逻辑
如果需要额外校验是否满足三角形三边关系(任意两边之和大于第三边),可在指定边长的校验逻辑中追加对应判断规则即可
完整实现代码
import java.util.Random; public class Triangle { int side1; int side2; int side3; // 共用的随机数生成器,避免每次生成随机数都创建新实例 private static final Random rng = new Random(); // 私有辅助方法:生成指定上限的随机边长 private void generateRandomSides(int max) { side1 = rng.nextInt(max) + 1; side2 = rng.nextInt(max) + 1; side3 = rng.nextInt(max) + 1; } // 默认构造器 public Triangle() { // 调用辅助方法,默认上限为6 generateRandomSides(6); } // 第一个参数化构造器:指定随机边长上限 public Triangle(int randomMax) { // 校验上限有效性,无效则用默认上限6 int validMax = randomMax > 1 ? randomMax : 6; generateRandomSides(validMax); } // 第二个参数化构造器:直接指定三边长度 public Triangle(int side11, int side22, int side33) { // 校验三边是否都有效 if (side11 > 0 && side22 > 0 && side33 > 0) { side1 = side11; side2 = side22; side3 = side33; } else { // 存在无效边,走默认随机生成逻辑 generateRandomSides(6); } } // toString方法 public String toString() { return " " + side1 + " x " + side2 + " x " + side3; } }
内容的提问来源于stack exchange,提问作者Jay Khan
相关产品推荐
相关产品推荐

