2015-02-24 3 views
2

Я изо всех сил пытаюсь понять, как работают функции вне основного. Мне просто нужно вычислить общую информацию, которая вводится пользователем в основном, но я должен вызвать функцию, чтобы суммировать ее. Вот код, который я до сих пор, я уверен, что это не очень близко к праву, толчок в правильном направлении был бы огромной помощьюИспользование функций в C#

namespace ConsoleApplication17 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     string customerName, customerState; 
     double numberItems, itemPrice; 
     Console.WriteLine("Please enter the customer name"); 
     customerName = Console.ReadLine(); 
     Console.WriteLine("Please enter the state in which you reside:"); 
     customerState = Console.ReadLine(); 
     Console.WriteLine("How many items were purchased?"); 
     numberItems = int.Parse(Console.ReadLine()); 
     Console.WriteLine("What was the price of said items?"); 
     itemPrice = Convert.ToDouble(Console.ReadLine()); 

    } 
    public static double ComputeTotal (double total) 
    { 
     double totalAmount; 
     Console.Write(total); 
} 

}

public static double ComputeTax (double totalAmount, string state, string fl, string nj, string ny) 
    { 
    if (state == fl) 
     return totalAmount*.06; 
    else if (state == nj) 
     return totalAmount*.07; 
    else if (state == ny) 
     return totalAmount*.04; 
    } 

Короче говоря, я необходимо использовать функцию ComputeTotal для умножения числаItems и itemPrice

+0

Почему бы просто не вызвать 'ComputeTotal()'? – Houseman

+1

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

+0

@GrantWinney Итак, вот что я пытался сказать, не будучи слишком многословным. Это для класса, и мой учитель быстро прошел его, и я не понимаю, как передать их методу. Я смотрел на примеры, но без достойных объяснений довольно сложно просто заниматься самостоятельно. – Wardy24

ответ

3

Функция в основном берет некоторые данные от вас и возвращает (некоторые другие?) данные вам. В вашем случае вы хотите предоставить функцию 2 части данных - количество и цену, и вы хотите, чтобы она вернула вам общую цену.

public static double ComputeTotal(double qty, double price) 
{ 
    return qty* price; 
} 

Эта функция ComputeTotal принимает 2 переменных типа double. Это цена и цена. Функция затем умножает эти 2 переменные и возвращает результат вызывающему.

В вашем основном методе вы используете (вызываете) функцию.

static void Main(string[] args) 
{ 
    // rest of your code here 


    var total = ComputeTotal(numberItems, itemPrice); 

    Console.WriteLine(total); 

} 

Здесь я создаю новую переменную общее, и я назначаю возвращаемое значение функции ComputeTotal этой переменной.

Функция ComputeTotal требует 2 параметра, и я передаю две переменные, которые вы создали в своем коде. Для краткости я не набрал ни одного из вашего исходного кода, и ваш код должен быть в месте моего комментария «// остальной части вашего кода здесь».

+0

Не уверен, что это выходит за рамки вашего вопроса, но ваша программа взорвется, если ppl не набирает десятичное число. например ABC вместо 1.25 – failedprogramming

+0

Хорошо, поэтому я получаю сообщение об ошибке, говоря, что никакой перегрузки для метода ComputeTotal не принимает 0 аргументов. Я совершенно новичок в этом, есть ли какой-то способ, которым я должен называть его в основном? – Wardy24

+0

, если вы посмотрите на мой второй блок кода на «var total = ComputeTotal (numberItems, itemPrice)»; Вы делали то же самое в своем коде и передавали эти 2 переменные? т. е. материал в скобках. – failedprogramming

1
your method/function could be like this 
    public static double ComputeTotal (double itemPrice, int quantity) 
    { 
     return itemPrice * quantity 
    } 

в основной метод, вы можете сделать, как этот

static void Main(string[] args) 
    { 
    double total_price=0.0; 
    total_price = ComputeTotal (itemPrice, numberItems) 
    Console.WriteLine("totl price : {0}",total_price); 
} 
1

понять, как функции работают

Я значительно перегонка, но функция этого определения действительно method, который возвращает значение. В C# нет различия между functions и methods, поскольку они одинаковы с различиями в том, что что-то возвращает данные или работает с экземпляром экземпляра класса.

Реальная разница в механизме вызована конкретизирует ли один (звонки new по классу); они мгновенно относятся к классу. Для этого задания ваш учитель не хочет, чтобы вы создавали экземпляр класса.

Следовательно, вы будете называть функции (ы) которые являются static методами, которые могут быть вызваны любым без каких-либо экземпляров классов.

Имея это в виду, ваш учитель хочет, чтобы вы узнать вызов на function типа, чтобы он/она хочет, чтобы вы создать метод static от класса Program, которую можно назвать по Main, потому что она статична, а также.

Создайте свою функцию тип статический метод, который вернет значение; поэтому он будет имитировать functions на других языках.

наружный основной.

Теперь Main может иметь статические методы, но так может другие классы , которые можно вызывать из Main «s статический метод, а также.

Другой класс, подобный этому, выглядит следующим образом ... и называется путем полной квалификации, например, {ClassName}. {Static Method Name}.

class Program { 

static void Main(...) 
{ 
    Console.WriteLine(TheOtherClass.AFunction()); 
} 
} 

public class TheOtherClass 
{ 
    public static string AFunction() 
    { 
     return "A String From this Function. :-) "; 
    } 
} 

Примечание, если TheOtherClass находится в другом пространстве имен, доступ к нему, такие как {Namespace}. {ClassName}. {Static Method Name}. Но вы должны убедиться, что другой класс находится в том же Namespace, что и в вашем текущем примере ConsoleApplication17.

Смежные вопросы