C#编写判断坐标是否在圆内代码出现布尔整数类型错误如何解决
问题原因
- 运算符使用错误:C# 中的
^是按位异或运算符,并非数学计算中的平方运算符。异或运算支持整数、布尔两种操作数类型,如果你的代码中漏写了数组下标(比如直接写pointX - centre而非pointX - centre[0]),编译器会因操作数类型不匹配触发异常,也就是你看到的“减法运算结果为布尔类型,无法执行平方操作”报错。 - 业务逻辑偏差:你当前写的
== r^2只能判断点是否刚好落在圆周边界上,不符合“判断是否在圆内”的需求。 - 输出格式错误:直接将
centre数组传入Console.WriteLine,默认会打印数组的类型名,而非圆心的坐标值。
修复方案
你可以直接使用差值相乘的方式计算平方,修改后的可运行代码如下:
public static void Main() { int[] centre = {0, 0}; int r = 5; Console.Write("输入X坐标: "); int pointX = Convert.ToInt32(Console.ReadLine()); Console.Write("输入Y坐标: "); int pointY = Convert.ToInt32(Console.ReadLine()); // 计算点到圆心的距离平方 int distanceSquare = (pointX - centre[0]) * (pointX - centre[0]) + (pointY - centre[1]) * (pointY - centre[1]); int rSquare = r * r; // 距离平方小于等于半径平方即为在圆内(含边界) bool checkFirst = distanceSquare <= rSquare; string check = checkFirst ? "true" : "false"; Console.WriteLine( "It is {0} that ({1},{2}) is inside circle (centre: {3},{4}) of radius {5}.", check, pointX, pointY, centre[0], centre[1], r); }
本次修改的核心点:
- 用
差值 * 差值计算平方,规避运算符误用问题,性能也优于调用Math.Pow方法 - 将判断条件从
==改为<=,匹配“点在圆内”的业务需求 - 输出圆心时分别取数组的两个元素,打印实际坐标值
- 补充Y坐标输入提示,避免用户不清楚需要两次输入
内容的提问来源于stack exchange,提问作者Arya_
相关产品推荐
相关产品推荐

