代码中存在数据类型错误,其中类型是布尔值而不是整数

Posted

技术标签:

【中文标题】代码中存在数据类型错误,其中类型是布尔值而不是整数【英文标题】:There is data type error in code where the type is boolean instead of integer 【发布时间】:2021-12-12 14:55:00 【问题描述】:

所以我在 C# 中编写了一个简单的代码:-

检查坐标是否在圆内

但是当我编译下面的程序时

public static void Main() 
        
            int[] centre=0,0;
            int r=5;
            Console.Write("Coordinates: ");
            int pointX=Convert.ToInt16(Console.ReadLine());
            int pointY=Convert.ToInt16(Console.ReadLine());
            bool checkFirst=((pointX - centre[0])^2)+((pointY - centre[1])^2)== r^2;
            string check= checkFirst ? "true" : "false";
            Console.WriteLine(
                "It is 0 that 1,2 is inside circle 3 of radius 4.",
                check,pointX,pointY,centre,r);
            
        

pointX - center 的行上,显示的错误是 减法在 bool 中,我无法平方

如果我去掉中心并写任何整数,答案是正确的。

请帮忙!!!

【问题讨论】:

^ 不是“幂”运算符(不存在),而是按位异或 仅供参考,intInt32,因此正确的解析是 Convert.ToInt32 - 但这不是问题的根源。 Int16 == 短 注意:“centre”的“ToString”是“System.Int32[]”,而不是“(0,0)” - 您需要单独指定值 【参考方案1】:

使用Math.Pow方法计算幂:

static void Main(string[] args)

    int[] centre =  0, 0 ;
    int r = 5;
    Console.Write("Coordinates: ");
    int pointX = Convert.ToInt16(Console.ReadLine());
    int pointY = Convert.ToInt16(Console.ReadLine());
    bool checkFirst = Math.Pow(pointX - centre[0], 2) + Math.Pow(pointY - centre[1], 2) <= Math.Pow(r, 2);
    string check = checkFirst ? "true" : "false";
    Console.WriteLine($"It is check that pointX,pointY is inside circle centre of radius r.");

【讨论】:

呃。 Math.Pow(pointX - centre[0])*(pointX - centre[0]) 贵很多。 @Enigmativity 但是可读性更强:)

以上是关于代码中存在数据类型错误,其中类型是布尔值而不是整数的主要内容,如果未能解决你的问题,请参考以下文章

python基础数据类型一(整数类型和布尔值)

传递迭代器值而不是引用函数

关于if判断布尔类型以及a==b的情况

PDO 错误:布尔和整数类型的输入语法无效 - 如果输入为空

Java基本数据类型与类型转换

为什么是C ++中的“整数”数据类型,能够容纳“ true”或“ false;布尔值