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

JS四边形类型判断代码异常:正方形/矩形被误判为Parallelogram

问题:正方形/矩形被错误识别为平行四边形

我写的JavaScript代码无法正常运行,输入正方形或矩形的边长与角度参数时,程序会错误识别为平行四边形。测试过代码也看了YouTube视频,都没解决问题。代码如下:

let side1 = prompt("Please enter the side of the shape");
let side2 = prompt("Please enter the side of the shape");
let side3 = prompt("Please enter the side of the shape");
let side4 = prompt("Please enter the side of the shape");

let corner1 = prompt("Please enter the corners of the shape");
let corner2 = prompt("Please enter the corners of the shape");
let corner3 = prompt("Please enter the corners of the shape");
let corner4 = prompt("Please enter the corners of the shape");

if (
  side1 === side2 &&
  side2 === side3 &&
  side3 === side4 &&
  ((corner1 === corner2) === corner3) === corner4
) {
  console.log(`The shape is a Square`);
} else if (
  side1 === side3 &&
  side2 === side4 &&
  ((corner1 < 90 && corner3 > 90 && corner2 < 90 && corner4 > 90) ||
    (corner1 > 90 && corner3 < 90 && corner2 > 90 && corner4 < 90))
) {
  console.log(`The shape is a Rhombus`);
} else if (
  side1 === side3 &&
  side2 === side4 &&
  corner1 === corner3 &&
  corner2 === corner4
) {
  console.log(`The shape is a Parallelogram`);
} else if (
  side1 === side3 &&
  side2 === side4 &&
  corner1 === corner2 &&
  corner3 === corner4
) {
  console.log(`The shape is a Rectangle`);
} else console.log("Your shape is weird");

修复方案

核心问题分析

  1. 类型不匹配:prompt返回的是字符串,直接用===比较数值会出错,比如输入"90"和90不会相等
  2. 判断顺序错误:平行四边形的条件(对边相等、对角相等)包含了矩形的特征,必须把矩形、正方形的判断放在平行四边形前面,否则会被提前匹配
  3. 正方形角度判断逻辑错误:((corner1 === corner2) === corner3) === corner4写法逻辑混乱,应该直接判断四个角都是90度且四边相等
  4. 菱形条件不完善:原代码的角度判断太局限,菱形本质是四边相等+对角相等且角度非直角

修复后的代码

// 把输入转成数字,避免字符串比较问题
let side1 = Number(prompt("请输入边长1"));
let side2 = Number(prompt("请输入边长2"));
let side3 = Number(prompt("请输入边长3"));
let side4 = Number(prompt("请输入边长4"));

let corner1 = Number(prompt("请输入角度1"));
let corner2 = Number(prompt("请输入角度2"));
let corner3 = Number(prompt("请输入角度3"));
let corner4 = Number(prompt("请输入角度4"));

// 先判断正方形:四边相等 + 四个角都是90度
if (side1 === side2 && side2 === side3 && side3 === side4 && 
    corner1 === 90 && corner2 === 90 && corner3 === 90 && corner4 === 90) {
  console.log("这是正方形");
} 
// 再判断矩形:对边相等 + 四个角都是90度
else if (side1 === side3 && side2 === side4 && 
         corner1 === 90 && corner2 === 90 && corner3 === 90 && corner4 === 90) {
  console.log("这是矩形");
} 
// 再判断菱形:四边相等 + 对角相等 + 不是直角
else if (side1 === side2 && side2 === side3 && side3 === side4 && 
         corner1 === corner3 && corner2 === corner4 && corner1 !== 90) {
  console.log("这是菱形");
} 
// 最后判断平行四边形:对边相等 + 对角相等
else if (side1 === side3 && side2 === side4 && 
         corner1 === corner3 && corner2 === corner4) {
  console.log("这是平行四边形");
} 
else {
  console.log("这个形状不符合规则");
}

修改说明

  • 所有输入用Number()转成数字类型,确保数值比较准确
  • 调整判断顺序:正方形→矩形→菱形→平行四边形,避免宽泛条件提前匹配
  • 修正正方形的判断逻辑,直接检查四个角是否为90度
  • 简化菱形的角度判断,只要四边相等、对角相等且非直角即可
  • 提示文字改成中文,更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:57:33