我已经创建了一个程序,它应该计算不规则形状物体的表面积,例如湖泊.我读了一个文件,其中包含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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用课程,如果有明显的答案,请道歉.
谢谢你的帮助!
您需要实际调用方法内的Main方法,即方法入口点.喜欢:
static void Main()
{
CalculateSurface();
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
运行程序时,Main实际只执行方法内的代码.如果你没有从那里调用任何东西,那么就不会执行任何代码.