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

Java三角形判定程序scalene三角形分支不触发问题排查

三角形判定程序Bug修复

不等边三角形分支永远不触发,是代码里的判断逻辑存在多处笔误和结构错误导致的,具体问题和修复方案如下:

核心错误点

  • 最外层三角形合法性判断逻辑完全错误:使用了或||连接判断条件,且第二个判定项笔误写成(sideB + sideA) > sideA,化简后等价于sideB > 0,只要输入的第二条边是正整数,整个最外层if条件就永远成立,对应的else分支(写的不等边三角形输出)永远没有执行机会。
    合法三角形的判定规则是任意两边之和大于第三边,三个条件必须同时满足,需要用且&&连接,正确的三个判定项应为sideA+sideB>sideC、sideB+sideC>sideA、sideA+sideC>sideB。
  • 无效三角形的判断分支位置错误:把“不是有效三角形”的判断写在了最外层“合法三角形”的代码块内部,逻辑矛盾,且判定项同样存在笔误。
  • 三角形类型判断没有做互斥:等边三角形本身满足任意两边相等的条件,现有写法输入等边边长时,会同时输出等边三角形、等腰三角形两条结果,逻辑错误。
  • 不等边三角形判定逻辑错位:不等边三角形的前提是首先为合法三角形,其次三条边两两不相等,不是“不满足最外层错误if条件”的场景。

修正后代码

import java.util.Scanner;

public class TriangleJudgement {
    public static void main(String[] args) {
        System.out.println("Hello, my name is Christian");
        System.out.println("In this program you will enter three whole numbers and\nI will tell you if the numbers you entered equal a triangle.");
        
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter your first whole number:");
        int sideA = Integer.parseInt(scan.nextLine());
        
        System.out.println("Please enter your second whole number:");
        int sideB = Integer.parseInt(scan.nextLine());
        
        System.out.println("Please enter your third whole number:");
        int sideC = Integer.parseInt(scan.nextLine());
        scan.close();

        // 优先校验三角形合法性
        boolean isValid = (sideA + sideB > sideC) && (sideB + sideC > sideA) && (sideA + sideC > sideB);
        if (!isValid) {
            System.out.println("That is not a valid triangle.");
            return;
        }

        // 按判断严格度从高到低判定三角形类型,分支互斥避免重复输出
        if (sideA == sideB && sideB == sideC) {
            System.out.println("That is an equilateral triangle.");
        } else if (sideA == sideB || sideB == sideC || sideA == sideC) {
            System.out.println("That is an isosceles triangle.");
        } else {
            System.out.println("That is a scalene triangle.");
        }
    }
}

修正逻辑说明

  • 先单独做合法性校验,不满足三角形规则直接输出结果终止程序,避免后续类型判断出错
  • 类型判断使用if-else if-else互斥结构,先判定条件最严格的等边三角形,再判定等腰三角形,剩余所有合法三角形自然为不等边三角形,不会出现重复输出、分支遗漏的问题
  • 修正了所有笔误的边长计算项和逻辑连接符,判定规则完全符合三角形数学定义

内容的提问来源于stack exchange,提问作者Christian Plumb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:09:21