Console.WriteLine не работает? - PullRequest
       0

Console.WriteLine не работает?

0 голосов
/ 02 января 2012

Я создал программу, которая должна вычислять площадь поверхности объекта неправильной формы, такого как озеро.Я прочитал в файле, который содержал значения для значений 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();
        }
    }
}

Я впервые использую классы, поэтому извиняюсь, если есть очевидный ответ.

Спасибо заваша помощь!

Ответы [ 3 ]

5 голосов
/ 02 января 2012

Вам необходимо вызвать метод внутри метода Main, который является точкой входа в программу.Например:

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

Когда вы запускаете свою программу, фактически выполняется только код внутри метода Main.Если вы ничего не вызываете оттуда, тогда код не выполняется.

1 голос
/ 02 января 2012

Функция не вызывается в главном событии ... Я должен представить, что кнопка чтения будет ждать ввода ключа, затем закроется, правильно?

0 голосов
/ 02 января 2012

Вы пытаетесь запустить это как консольное приложение или как модульный тест?(Похоже, вы пытаетесь запустить его как модульный тест, так как вы используете NUnit.Framework и есть метод Test с Assert ...)

Если вы хотите запустить его как консольПрикладная программа должна вызывать код, который должен выполняться в методе Main.

Если вы хотите запустить его как модульный тест, вам необходимо добавить некоторые «атрибуты» в ваш тестовый класс и тестовый метод.Класс должен иметь атрибут [TestFixture], а метод должен иметь атрибут [Test], например:

[TestFixture]
public class SurfaceCalculator {

...

[Test]
public void TestSurfaceCalculatorGetsAValue() {
...
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...