2015-02-24 67 views
2

我很努力地理解函数如何在main之外工作。我只需要计算用户输入的主要信息的总数,但是我应该调用一个函数来总和这个信息。这里是我到目前为止的代码,我相信它是不是很接近正确,在正确的方向轻推将是一个巨大的帮助在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来乘以numberItems和itemPrice

+0

为什么不直接调用'ComputeTotal()'? – Houseman 2015-02-24 02:34:36

+1

我首先将方法的数量和价格传递给方法,进行计算并返回结果。 – 2015-02-24 02:34:50

+0

@GrantWinney所以这里是我想说的话,不要太罗嗦。这是为了上课,我的老师很快就过去了,我不知道如何将这些传递给方法。我一直在看例子,但没有像样的解释,仅靠我自己就很难。 – Wardy24 2015-02-24 02:36:40

回答

3

函数基本上会从您那里获取一些数据并返回(其他一些?)数据给您。 在你的情况下,你想给这个函数2个数据 - 数量和价格,并且你想让它返回你的总价格。

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

此函数ComputeTotal接受2个类型为double的变量。 他们是数量和价格。 函数然后将这两个变量相乘并将结果返回给调用者。

在你的主要方法中,这是你如何使用(调用)函数。

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


    var total = ComputeTotal(numberItems, itemPrice); 

    Console.WriteLine(total); 

} 

这里我创建了一个名为total的新变量,我将ComputeTotal函数的返回值赋值给这个变量。

ComputeTotal函数需要2个参数,我传递了2个在代码中创建的变量。为了简洁,我没有输入任何原始代码,并且您的代码应该位于我的评论“//此处的其他代码”位置。

+0

不确定它是否超出问题范围,但如果ppl未键入十进制数,则程序将炸毁。例如ABC而不是1.25 – failedprogramming 2015-02-24 02:41:29

+0

好的,所以我得到一个错误,说方法ComputeTotal没有超载需要0个参数。我对此很新,是否有某种方式我应该在主要方面调用它? – Wardy24 2015-02-24 02:45:07

+0

如果你看看我的第二个代码块在“var total = ComputeTotal(numberItems,itemPrice);”你有没有在你的代码中做同样的事情并传递这两个变量?即括号内的东西。 – failedprogramming 2015-02-24 02:46:27

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

你可以像这样

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#中,functionsmethods之间没有区别,区别在于它们是返回数据还是在类实例的引用实例上运行。

的真正区别是在调用机制一个是否实例(一类叫new);他们实例化一个类。对于这项任务,你的老师不希望你实例化一个班级。

因此,你会调用功能(S)这是static方法可以由任何人没有实例任何类调用。

考虑到这一点,你的老师希望你让他/她要你创建一个static方法关闭类Program可以通过Main因为它是静态的,以及被称为学习function类型的呼叫。

所以创建你的函数类型静态方法将返回一个值;因此它会在其他语言中模仿functions

以外主。

Main现在可具有静态方法,但这样可以其它类能够从Main的静态方法内调用为好。

像这样的其他类看起来像这样...并且通过完全限定位置(例如{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中的的当前示例中找到的相同。