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

C#坐标距离计算程序异常:跳过输入行且结果随机求排查

解决你的C#三维坐标距离计算问题

嘿,作为C#新手遇到这种问题太正常了,我来帮你一步步捋清楚!

首先看你当前的代码,只写了第一个提示语句,完全没有读取用户输入的逻辑,而且变量都没初始化就准备计算——这就是为什么程序看起来“跳过输入行”(其实是执行完提示就直接结束了),如果强行往下写计算逻辑,还会因为变量未赋值得到错误甚至看似随机的数值。

修正后的完整代码

namespace CoordinateCalcMC
{
    class Program
    {
        static void Main(string[] args)
        {
            int x1, y1, z1;
            int x2, y2, z2;

            // 读取第一组坐标,加入输入验证避免崩溃
            Console.WriteLine("请输入第一个点的X坐标:");
            while (!int.TryParse(Console.ReadLine(), out x1))
            {
                Console.WriteLine("输入无效,请输入一个整数:");
            }

            Console.WriteLine("请输入第一个点的Y坐标:");
            while (!int.TryParse(Console.ReadLine(), out y1))
            {
                Console.WriteLine("输入无效,请输入一个整数:");
            }

            Console.WriteLine("请输入第一个点的Z坐标:");
            while (!int.TryParse(Console.ReadLine(), out z1))
            {
                Console.WriteLine("输入无效,请输入一个整数:");
            }

            // 读取第二组坐标
            Console.WriteLine("\n请输入第二个点的X坐标:");
            while (!int.TryParse(Console.ReadLine(), out x2))
            {
                Console.WriteLine("输入无效,请输入一个整数:");
            }

            Console.WriteLine("请输入第二个点的Y坐标:");
            while (!int.TryParse(Console.ReadLine(), out y2))
            {
                Console.WriteLine("输入无效,请输入一个整数:");
            }

            Console.WriteLine("请输入第二个点的Z坐标:");
            while (!int.TryParse(Console.ReadLine(), out z2))
            {
                Console.WriteLine("输入无效,请输入一个整数:");
            }

            // 计算三维距离:√[(x2-x1)² + (y2-y1)² + (z2-z1)²]
            double xDistSquared = Math.Pow(x2 - x1, 2);
            double yDistSquared = Math.Pow(y2 - y1, 2);
            double zDistSquared = Math.Pow(z2 - z1, 2);
            double totalDist = Math.Sqrt(xDistSquared + yDistSquared + zDistSquared);

            // 输出结果,保留两位小数更直观
            Console.WriteLine($"\n两个点之间的距离是:{totalDist:F2}");
        }
    }
}

关键知识点解释

  • 读取输入的正确方式:必须用Console.ReadLine()获取用户输入,再用int.TryParse()转换成整数——这个方法还能自动验证输入是否有效,避免用户输入非数字导致程序直接崩溃。
  • 变量初始化规则:C#的局部变量必须赋值后才能使用,否则会触发编译错误。我这里用out参数直接在TryParse里给变量赋值,就不用提前手动初始化了。
  • 三维距离公式:正确的计算逻辑是先算每个轴差值的平方,求和后再开平方根。因为结果大概率是小数,所以要用double类型存储结果,不能用int(会直接丢失小数部分)。
  • 用户体验优化:加入循环验证输入,当用户输错时会提示重新输入,比直接报错友好很多。

这样修改后,程序就能正常接收你的坐标输入,并且计算出准确的三维距离啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:51:37