控制台.WriteLine不工作

本文关键字:工作 WriteLine 控制台 | 更新日期: 2023-09-27 18:19:16

我创建了一个程序,该程序应该计算不规则形状物体的表面积,例如湖泊。我读取了一个文件,其中包含了x和y的值,以及深度。

我是c#的新手,所以我还没有完全理解一切,但我认为我的代码应该工作,然而,它似乎没有将该区域的值写入屏幕上。

我知道Console.WriteLine(_surface);应该工作,但它似乎不能让它做任何事情,它可能在错误的地方!

谁能告诉我我哪里做错了?

我的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using NUnit.Framework;

namespace ConsoleApplication1
{

    public class ValueXyz
    {
        public double X { get; set; }
        public double Y { get; set; }
        public int Z { get; set; }

    }

    public class SurfaceCalculator
    {
        private ValueXyz[] _valuesXyz;
        private double _surface;
        private readonly string _textWithValues;
       public SurfaceCalculator(string textWithValues)
        {
            _textWithValues = textWithValues;
            SetValuesToCalculate();
        }
        public double Surface
        {
            get { return _surface; }
        }

        public void CalculateSurface()
        {
            for (var i = 0; i < _valuesXyz.Length; i++)
            {
                if (_valuesXyz[i].Z == 0)
                    _surface = (_valuesXyz[i].X * _valuesXyz[i + 1].Y) - (_valuesXyz[i + 1].X * _valuesXyz[i].Y);
                Console.WriteLine(_surface);
            }

        }

        private void SetValuesToCalculate()
        {
            var valuesXyz = _textWithValues.Split(' ');

            _valuesXyz = valuesXyz.Select(item => new ValueXyz
            {
                X = Convert.ToDouble(item.Split(',')[0]),
                Y = Convert.ToDouble(item.Split(',')[1]),
                Z = Convert.ToInt32(item.Split(',')[2])

            }).ToArray();


        }

        public void TestSurfaceCalculatorGetsAValue()
        {
            var textWithValues = File.ReadAllLines(@"C:'Users'user'Documents'Visual Studio 2010'Projects'Lake_Take_Toooooo'Lake_Take_Toooooo'bin'Debug'Lake_Test.csv");
            var calculator = new SurfaceCalculator(_textWithValues);
            calculator.CalculateSurface();

            Assert.IsNotNull(calculator.Surface);
        }
        static void Main()
        {
            Console.ReadKey();
        }
    }
}

这是我第一次使用类,所以很抱歉,如果有一个明显的答案。

谢谢你的帮助!

控制台.WriteLine不工作

您需要在Main方法中实际调用该方法,该方法是程序入口点。如:

    static void Main()
    {
        CalculateSurface();
        Console.ReadKey();
    }

当你运行你的程序时,只有Main方法中的代码被实际执行。

主事件中没有函数被调用…我应该想象一下read key会等待key输入然后关闭,对吗?

您是要将其作为控制台应用程序运行还是作为单元测试运行?它看起来像你试图运行它作为单元测试,因为你使用的是NUnit。框架中有一个test方法带有Assert…)

如果你想把它作为控制台应用程序运行,你必须调用应该在Main方法中执行的代码。

如果你想把它作为单元测试来运行,你必须给你的测试类和测试方法添加一些"属性"。类应该具有[TestFixture]属性,方法应该具有[Test]属性,如:

[TestFixture]
public class SurfaceCalculator {
...
[Test]
public void TestSurfaceCalculatorGetsAValue() {
...
}
}