Member 13834513 Ответов: 1

Я не могу заставить расчеты работать. Помогите пожалуйста


 class Program
    {


        static void Main(string[] args)
        {
            string customerName = "", state = "";
            int quantity = 0;
            double price = 0, sales = 0, tax = 0;

            Console.WriteLine("\n\nWelcome to the Sales Tax Calculator");

            Console.Write("\n\nPlease enter in the customer name:  ");
            customerName = Console.ReadLine();
            Console.Write("\n\nPlease enter in the State (NY / NJ / FL):  ");
            state = Console.ReadLine();
            Console.Write("\n\nPlease enter in the number of items purchased:  ");
            quantity = Convert.ToInt32(Console.ReadLine());
            Console.Write("\n\nPlease enter in the unit price of the item:  ");
            price = Convert.ToDouble(Console.ReadLine());



            sales = ComputeTotal(quantity, price);

            tax = ComputeTax(sales, state);

            Console.WriteLine(customerName + " your total sales are:  ");

            Console.WriteLine("Your total with taxes is:  " + tax);


            Console.ReadLine();
            
        }
        public static double ComputeTotal(int quantity, double price)
        {
            return (quantity * price);
        }

        public static double ComputeTax(double sales, string state)
        {
            double taxAmt = 0;

            if (state == "NY")
                taxAmt = sales * .04;
            else if (state == "NJ")
                taxAmt = sales * .07;
            else if (state == "FL")
                taxAmt = sales * .06;

            return taxAmt;


        }
    }
}


Что я уже пробовал:

Честно говоря, я не знаю, что еще попробовать. Я не спал всю ночь, пытаясь разобраться в этом самостоятельно.

0x01AA

Вы также должны объяснить, в чем заключается ваша проблема, например, что вы вводите, что вы ожидаете в результате и какой результат вы получаете от своего кода.

Member 13834513

Поэтому мне нужно вычислить общий объем продаж, налог и распечатать их оба. Я знаю, что что-то не так с расчетами, но я не могу понять, что происходит не так.

OriginalGriff

Так что используйте отладчик и узнайте!

Member 13834513

Я использовал отладчик и до сих пор не могу понять, что это такое. Я всего лишь новичок, который пытается выучить C#. Я нашел кое-что из школьной работы моих братьев и подумал, что мне это может понравиться.

OriginalGriff

И что же вам показал отладчик?
Вы не можете просто "схватить программное обеспечение" и волшебным образом понять его, вы должны правильно изучить основы, иначе более продвинутые вещи вообще не будут иметь никакого смысла!

0x01AA

Еще раз: опишите, что происходит, и приведите пример. Каковы ваши входные данные, чего вы ожидаете в результате и какой результат вы получаете от своего кода.

Существует так много возможностей, когда текущий код может быть неправильным. Например, Сравнение state == "XYZ" Подумайте о чем-нибудь подобном state.ToUpper() == "XYZ"

Patrice T

Показать пример ввода, фактический выход и ожидаемый выход.

Member 13834513

Итак, предположим, что Введенное имя клиента-это Билл, затем введенное состояние-это NJ(налог 0,07), 3 купленных товара и цена единицы измерения-1,50.
Выход должен быть общий объем продаж для счета-4,50, а общий объем с налогами-4,82.

0x01AA

Console.WriteLine("Your total with taxes is: " + tax);
против.
Console.WriteLine("Your total with taxes is: " (sales + tax).ToString());

Patrice T

Я сказал выход фактического и ожидаемого результата
Или объясните, как это неправильно.
Не каждый твой язык готов к бегу !

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Gerry Schmitz

Почему бы вам не "отобразить" введенные значения (например, цену, кол-во и т. д.), Чтобы подтвердить, что они соответствуют вашим ожиданиям (верхний регистр; нижний регистр; не "пусто" и т. д.), Прежде чем делать свои вычисления?

Ты летишь вслепую.

George Swan

Какого результата вы ожидаете? Если сумма равна 10, цена 100, налог по нью-йоркской ставке= 0,04, то продажи=100*10=1000,налог=1000*0,04= 40, общая сумма к оплате=1000+40= 1040

1 Ответов

Рейтинг:
2

OriginalGriff

Компиляция не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы позволить пользователю ввести число, а затем удвоить его и напечатать ответ, то если бы ввод / вывод был таким:

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
private int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. Поместите точку останова в первую строку метода и запустите приложение. Когда он достигнет точки останова, отладчик остановится и передаст управление вам. Теперь вы можете запускать свой код построчно (так называемый "одноступенчатый") и просматривать (или даже изменять) содержимое переменных по мере необходимости (черт возьми, вы даже можете изменить код и повторить попытку, если вам это нужно).
Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она действительно делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?
Надеюсь, это поможет вам определить, в какой части этого кода есть проблема и в чем она заключается.

Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!