You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:06:04